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

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

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

Re[1]: ADODB Provider設定について


(過去ログ 115 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■67699 / inTopicNo.1)  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
引用返信 編集キー/
■67703 / inTopicNo.2)  Re[1]: ADODB Provider設定について
□投稿者/ Nxxbie (2回)-(2013/08/25(Sun) 20:19:58)
No67699 (Nxxbie さん) に返信
> 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
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -