2

Excel からデータセットにデータをインポートするプログラムがあります。Excelに接続するには、次のコードを使用します...

return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + 
fileName + "; Jet OLEDB:Engine Type=5;"+ "Extended Properties=\"Excel 8.0;\"");

Excel 2010 を搭載した新しいコンピューターを入手したばかりですが、接続の試行が失敗し、次のような例外がスローされます。The 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine

これは、新しいバージョンの Excel が別の接続文字列を必要とするためですか? 誰かがこれに遭遇しましたか?

編集:実際、 System.Data.OleDbClient クラスを使用しても Excel をコンピューターにインストールする必要がないことをどこかで読んだところです。したがって、私の問題はおそらく Excel とは関係なく、Microsoft.Jet ツールとは関係ありません。私のコンピューターは Windows7 64 ビットを実行しています。それはすでにインストールされているはずではありませんか?

4

3 に答える 3

1

Microsoft Access データベース エンジン 2010 再頒布可能パッケージを確認してください。
他の Excel バージョンの再頒布可能ファイルも存在します。

于 2010-08-21T13:32:01.873 に答える
1

プログラムが WoW サブシステムで実行され、32 ビットの Jet プロバイダーが呼び出されるように、プログラムを 32 ビット専用にコンパイルする必要があります。前述のように、Jet プロバイダーの 64 ビット バージョンは存在せず、今後も存在しない可能性があります。

Visual Studio では、プロジェクト設定でターゲット CPU の種類を Any または 64 ビットではなく x86 に設定することでこれを行います。

プログラムのソースがない場合は、.NET フレームワークに付属の corflags.exe ユーティリティと /32bit+ フラグを使用して .exe を変更できますが、強く署名されたアセンブリの場合は、.変更したら、SNK に再署名してもらいます。

詳細が必要な場合は、WoW64 のリファレンスをご覧ください: http://en.wikipedia.org/wiki/WoW64

于 2010-08-21T22:17:38.653 に答える
0

このサイトは、接続文字列に関する質問がある場合に役立ちます。

http://www.connectionstrings.com/excel

また、以前の SO の質問もご覧ください。

Excel 2010 のクエリ時に OLEDB 例外を診断する

于 2010-08-21T13:52:17.603 に答える