我用ADODB來讀取Excel在32位Windows文件,它的運行文件所遺留的C++代碼,它是這樣的:使用adodb讀取64位Windows 7中的excel文件的C++?
#import "C:/Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") rename("BOF", "adoBOF")
string conn_str;
if(*(file_name.back()) == 'x')
conn_str = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + file_name + ";Extended Properties=\"Excel 12.0 Xml;HDR=Yes;IMEX=1\"";
else
conn_str = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" + file_name + ";Extended Properties=\"Excel 8.0;HDR=Yes\"";
::CoInitialize(NULL);
pRec->Open("SELECT * FROM [" + SheetName + "]", conn_str, adOpenStatic, adLockOptimistic, adCmdText));
現在移動到新的環境中部署(64位Windows + 64位excel),代碼無法運行,錯誤消息是「無法找到提供程序」。
試圖解決這個問題,但在互聯網搜索後,我有點困惑。
微軟FAQ About Windows DAC/MDAC等似乎是說「Microsoft數據訪問組件(MDAC)」包括ADO,OLE DB和ODBC;但MDAC已過時,現在該軟件包被稱爲「Windows數據訪問組件(Windows DAC)」,它會自動安裝在Windows 7中。
- 所以我不需要在64位Windows 7上安裝MDAC ,並且Microsoft Data Access Components (MDAC) 2.8 SP1上的下載是32位的?
但是,那麼我怎樣才能使用調用msado15.dll
的遺留代碼來讀取excel?
我應該將32位MDAC安裝到SysWOW64
文件夾並繼續使用它嗎?但是,這個32位msado能打開一個由64位excel創建的excel文件嗎?
或者我應該使用「Windows DAC」中的其他dll在64位窗口上使用ado嗎?
或者,我不得不放棄ado並找到其他方式來讀取C++中的excel文件?