Microsoft.Jet.OLEDB.4.0使用してエクセルデータ取得でエラー
- 題名: Microsoft.Jet.OLEDB.4.0使用してエクセルデータ取得でエラー
- 著者: ドラゴン
- 日時: 2012/10/28 18:07:19
- ID: 31088
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: Microsoft.Jet.OLEDB.4.0使用してエクセルデータ取得でエラー
- 著者: オショウ
- 日時: 2012/10/28 19:26:37
- ID: 31090
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: Microsoft.Jet.OLEDB.4.0使用してエクセルデータ取得でエラー
- 著者: ドラゴン
- 日時: 2012/10/30 0:08:46
- ID: 31094
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[3]: Microsoft.Jet.OLEDB.4.0使用してエクセルデータ取得でエラー
- 著者: ドラゴン
- 日時: 2012/10/30 0:09:54
- ID: 31095
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.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)
以上です。