C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 115 を表示中)
■67699 / )  ADODB Provider設定について
□投稿者/ Nxxbie (1回)-(2013/08/25(Sun) 16:19:53)

分類:[Windows 全般] 

VB2010でツールを作成しており、途中Excel読み込みをしています。

ADODBを使用して読み込みをするのですが、途中読み込まない箇所が出てきています。
改善方法が分からず、ご教示願います。

読み込み対象としているExcelは拡張子が(.xls)のExcelファイルなのですが、(.xlsx)のファイルを
互換変換し保存されたファイルのようで、ADODB JET.OLEDBで読み込もうとしても「定義されているフィールドが多すぎます」との内容でエラーになってしまいます。

そこでACE.OLEDBで読み込もうとしているのですが、なぜか11列目だけが正常に読み込まれません。

色々試してみたところ、

IMEX=0に設定→読み取り成功
IMEX=1に設定→読み込み失敗
IMEX=2に設定→読み取り失敗

HDR=YESに設定→読み取り成功
HED=NOに設定→読み取り失敗

Windows7 64bit
Microsoft Office2010を使用しています。

解決策の教示よろしくお願いいたします。



以下、ソースを記述します。

Using cn As New System.Data.OleDb.OleDbConnection
 Using cm As New System.Data.OleDb.OleDbCommand
  Using da As New System.Data.OleDb.OleDbDataAdapter
   Dim ds As New DataSet

Dim FileName As String = e.Data.GetData(DataFormats.FileDrop)(0)

Dim SheetName As String = "Sheet1"

   cn.ConnectionString = "provider=Microsoft.ACE.OLEDB.12.0;Data source=" + FileName + ";Extended properties=""Excel 12.0;IMEX=1;HDR=No"""
cm.Connection = cn

cm.CommandText = "select * from [" & SheetName & "$]"
da.SelectCommand = cm
da.Fill(ds, SheetName)
DataGridView1.DataSource = ds
DataGridView1.DataMember = SheetName
   End Using
  End Using
End Using
返信 編集キー/


管理者用

- Child Tree -