我有一个遗留的c ++代码,使用adodb来读取32位窗口中的excel文件,它正在运行文件,它类似于:
#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),代码无法运行,错误消息是“无法找到提供商”。
试图解决这个问题,但在互联网上搜索后我有点困惑。
Microsoft 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文件?
答案 0 :(得分:0)
如果有任何人碰到这里,要在安装了Office 64位的x64 windows机器上访问c ++代码中的excel数据,你需要