AccessとExcelデータベーステーブル32ビット64ビットプログラム共通アクセス方法

2490 ワード

AccessとExcelデータベーステーブル32ビット64ビットプログラム共通アクセス方法
以前、excelファイルを読むプログラムを書くときに、このようなoledbデータ接続文字列が採用されていました.
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\test.xls;Extended Properties='Excel 8.0;HDR=YES;IMEX=0';

 
ただし、両方の場合、このoledbのデータ接続でエラーが発生します.1つは、Excel 2007以降のxlsxファイルに直面した場合、2つは64ビット版のオペレーティングシステムにプログラムが配置され、実行時のプログラムセットが64ビットまたは「任意のプラットフォーム」にコンパイルされた場合です.
1つ目はjet 4.0がxlsxファイルフォーマットをサポートしていないため、ファイルが開かない場合があります.
2つ目のケースでは、ole connectionの作成時に「Microsoft.Jet.OLEDB.4.0'provider is not registered on the local machine」という問題が発生します.64ビットシステムにmsdacをインストールしてもだめです.msdacのコンポーネントは32ビットモードのプログラムセットにしかアクセスできません.
ネット上ではiisを32ビットモードで実行させる方法を採用して問題を解決する人が多く、マイクロソフトが64ビット版のmsdacコンポーネントを提供していないと愚痴をこぼしている.しかし、重要なoffice更新として、excel 2007版以降、データアクセスコンポーネントの全面的なサポートを提供しないわけにはいきません.
研究の結果、マイクロソフトはすでに新しいものでmsdacのクラスを迎えに来たことが分かった.そのため、msdacに力を入れ続けず、jet 4もなくなった.0以降の更新.
新しいものはMicrosoft Access Database Engineと呼ばれ、MS ACEと略称され、現在の最新版は2010版で、このコンポーネントはそれぞれ32ビット版と64ビット版を発行し、現在のすべてのexcelファイルフォーマットを完全にサポートしています.もちろん、office 2007以前の古いファイルフォーマットを含むすべてのaccessファイルフォーマットもあります.このコンポーネントのoledb providerでも同様に開くことができます.
 
しかし、新しいoledb接続文字列を使用する必要があります.次のようにします.
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\test.xls;Extended Properties='Excel 12.0;HDR=YES;IMEX=0';

 
このような接続文字列は、officeバージョンのファイルフォーマットに使用できます.またWindows 64 bitでも正常に動作しています.
 
MS ACEのダウンロードアドレスはこちらです.http://www.microsoft.com/en-us/download/details.aspx?id=13255