簡體   English   中英

C ++使用adodb在64位Windows 7中讀取Excel文件?

[英]C++ using adodb to read excel file in 64-bit windows 7?

我有一個使用adodb讀取32位Windows中的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),代碼無法運行,錯誤消息為“找不到提供程序”。

試圖解決問題,但是在Internet上搜索后,我有點困惑。

關於Windows DAC / MDAC的 Microsoft 常見問題解答似乎說,“ Microsoft數據訪問組件(MDAC)”包括ADO,OLE DB和ODBC; 但是MDAC已過時,現在該程序包稱為“ Windows數據訪問組件(Windows DAC)”,它將自動安裝在Windows 7中。

-因此,我不需要在64位Windows 7上安裝MDAC,而在Microsoft數據訪問組件(MDAC)2.8 SP1上的下載是32位的嗎?

但是,如何使用舊代碼調用msado15.dll來讀取Excel?

我應該將32位MDAC安裝到SysWOW64文件夾並繼續使用嗎? 但是,此32位msado可以打開由64位excel創建的excel文件嗎?

還是我應該使用“ Windows DAC”中的其他dll在64位Windows上使用ado?

或者,我必須放棄ado並找到其他方法來讀取c ++中的excel文件?

如果有人碰巧要在裝有Office 64位的x64 Windows機器上訪問C ++代碼中的excel數據,則需要

  • 下載Microsoft Access Database Engine 2016可重新分發並安裝
  • 用C ++代碼導入msadoXX.dll
  • 使用正確的連接字符串,在上面的頁面上展開“安裝說明”,其中有諸如“ Microsoft.ACE.OLEDB.12.0”的ConnectionString屬性之類的詳細信息,對於Excel 97-2003工作簿(.xls)使用“ Excel 8.0”,對於Excel工作簿(.xlsx)使用“ Excel 12.0 Xml”等。注意:“ Microsoft.JET.OLEDB”不起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM