6

以下を使用して、アプリケーションで Excel シートの内容を読み取っています。

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0");
 _myDataSet = new DataSet();
 OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + "My Sheet" + "$]", con);

myCommand.Fill(_myDataSet);
con.Close();

これは、64 ビット システムでは次のエラーで失敗します。

Microsoft.Jet.OLEDB.4.0' プロバイダーがローカル コンピューターに登録されていません

64ビットマシンでこれを機能させるにはどうすればよいですか?

4

4 に答える 4

10

Microsoftは、AccessおよびExcelで動作する64ビットドライバーを使用したドライバーディストリビューションをリリースしました。MSダウンロードサイトから64ビットバージョンと32ビットバージョンの両方をダウンロードできます。ダウンロードページには、ACEドライバを参照するために接続文字列で変更する必要があるものの簡単な概要もあります。

簡単に言うと、64ビットドライバーディストリビューションをインストールしてから、接続文字列を次のように変更します。

string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=""Excel 8.0;IMEX=1""";
于 2011-01-12T05:18:16.077 に答える
5

Microsoft.Jet.OLEDB には 64 ビット版がなく、32 ビット版しかありません。アプリケーションを 32 ビットとしてコンパイルします (プラットフォーム ターゲット: ビルド オプションで x86)。

于 2010-09-08T23:00:14.703 に答える
1

私はそれがうまくいくとは思わない...この関連する質問を参照してください: OleDBは64ビットモードでサポートされていませんか?

問題は、COM/Interop が 64 ビット環境用に設計されていないため、64 ビット モードで登録できないことです。

.NET アプリを 64 ビット マシンで 32 ビット モードで実行するように強制できます。これにより、OleDB 機能にアクセスできるようになります。

于 2010-09-08T22:59:16.587 に答える
1

忘れて、この問題を解決する codeplex のこれらの dll を使用してください。http://exceldatareader.codeplex.com/

于 2013-05-27T14:05:17.117 に答える