[ad_1]
やあ、
OLEDB 接続を使用して、サンプル データ テーブルをデータベースから Excel に保存しています。
でExcelファイルを保存すると [.XLS] 拡張子が付けられていれば、ファイルを開いて、保存されているデータ テーブルを確認できます。
しかし、Excelファイルを作成すると [.XLSX] フォーマット、データテーブルを移動した後、
開こうとすると、次のようなエラーが発生します
「ファイル形式またはファイル拡張子が正しくありません。ファイルが破損しているか、ファイル拡張子がファイル形式と一致していないか確認してください」と表示され、Excel ファイルを開くことができません。
Windows 7 を使用しており、「Acess データベース エンジン」をインストールしようとしましたが、それでも同じエラーが発生します。
以下は、.XLSX 形式の単純な Excel ファイルを作成しようとしている src コードです。
(選択したファイル パスは C:\\Users\Vijay\Desktop\Recipe.XLSX です)
Dim saveDialog As New System.Windows.Forms.SaveFileDialog saveDialog.Title = "ExportFile" saveDialog.Filter = "MS Office Excel2007|*.xlsx" 'saveDialog.DefaultExt = "xlsx" 'saveDialog.SupportMultiDottedExtensions = True saveDialog.FileName = "Recipe" If saveDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then ExpFileName = saveDialog.FileName End If Dim ConString As String = "" ConString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 12.0;HDR=YES"";Data Source={0}", ExpFileName) Dim conObj As New System.Data.OleDb.OleDbConnection() conObj.ConnectionString = ConString conObj.Open() Dim createTable As String = "CREATE TABLE sheet1(VJ1 char(255),VJ2 char(255))" Dim cmd As System.Data.OleDb.OleDbCommand = New System.Data.OleDb.OleDbCommand(createTable, conObj) cmd.ExecuteNonQuery()
前もって感謝します、
ビジェイ
解決策 2
コードでは、接続文字列の ‘ Extended Properties=””Excel 12.0;HDR=YES ‘ .a ‘Xml’ を追加して ‘ Extended Properties=””Excel 12.0 Xml;HDR=YES ‘ にする必要があります。
.したがって、接続文字列を次のように変更する必要があります。
ConString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=""Excel 12.0 Xml;HDR=Yes"";Data Source=" & ExpFileName)
Excelシートでデータを指定または検証するために使用されているようです。つまり、なぜこれが重要なのかわかりませんが、
この接続文字列は、シナリオの時点で機能します。
解決策 1
コードは「古い」Excel 形式を生成します。 古い形式の拡張子を「.xlsx」に変更すると、Excel はその例外をスローします。 ファイルを新しい形式で保存し、拡張子を「.xls」に変更すると、Excel はファイルが破損している可能性があることを警告しますが、ファイルを開くことはできます。 そのため、拡張子が形式と一致していることを確認してください。
解決策 3
最近、しようとしたときに同じ問題が発生しました XLSXを開く oLedb を使用してエクスポートされたファイル。 いくつかの調査を行った後、oledb は XLS 形式のみをサポートしていることがわかりました。 XLSX ファイルを開くには、Microsoft.ACE.OLEDB.12.0 プロバイダーを使用する必要があります。
[ad_2]
コメント