DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Microsoft.Jet.OLEDB.4.0使用してエクセルデータ取得でエラー

環境/言語:[OS : Windows Vista / 言語 : Visual Basic .NET / .NET Framework : 3.5]
分類:[.NET]

【開発環境】
Microsoft Visual Studio 2010
Version 10.0.40219.1 SP1Rel
Microsoft .NET Framework
Version 4.0.30319 SP1Rel

【エクセルバージョン】
Microsoft Office Excel 2007

どなたかご教授ください。

【解決したい問題】

■不具合
エクセルを開いているとエラーがでない。
エクセルを開かないで実行するとエラーがでる。

■詳細
下記を利用してxlsxファイルの中身を吸い上げる。

 ■DBの接続
con.ConnectionString = _
"Provider=Microsoft.Jet.OLEDB.4.0; " & _
"Data Source=" & _
ssFileName & _
";" & _
"Extended Properties=""Excel 8.0;HDR=YES;"""

 ■SQL文
   "SELECT * FROM [Sheet1$] "

仮にそのファイルをA.xlsxとする。
A.xlsxを開いている状態ではエラーがでない。
しかしA.xlsxのファイルを開いていない状態では
da.Fill(dt)の行でエラーがでる。

■エラーのメッセージ
System.Data.OleDb.OleDbException がキャッチされました
ErrorCode=-2147467259
Message=外部テーブルのフォーマットが正しくありません。
Source=Microsoft JET Database Engine
StackTrace:
場所 System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
場所 System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
場所 System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
場所 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
場所 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
場所 System.Data.OleDb.OleDbConnection.Open()
場所 System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
場所 System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
場所 System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)


以上です。
Excel 2007 なら・・・
Microsoft.ACE.OLEDB.12.0 を使わないといけないかと。

2007 Office System 用
ttp://www.microsoft.com/ja-jp/download/details.aspx?id=23734

因みに、2010 なら
ttp://www.microsoft.com/ja-jp/download/details.aspx?id=13255

以上。参考まで
質問したドラゴンです。

解決しました。

教えていただいた
Microsoft.ACE.OLEDB.12.0
に書き換えたところうまくいきました。

ありがとうございます。
■No31094に返信(ドラゴンさんの記事)
> 質問したドラゴンです。
>
> 解決しました。
>
> 教えていただいた
> Microsoft.ACE.OLEDB.12.0
> に書き換えたところうまくいきました。
>
> ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板