VS2013 ADO打开Excel文件连接总是出错。。。

Toppeak2015 2017-03-16 09:32:24
我在VS2013平台用ADO对Excel文件进行操作,第一次做,m_pConnection连接问题出错误,实在没招了,来请教大神们是到底是怎么回事???本机已安装Excel2010,也升级过AccessDatabaseEngine_X64.exe引擎,我是win764bit操作系统。
我的主要操作步骤如下:
1、在stdafx.h中先导入ADO
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","ADOEOF") rename("BOF","ADOBOF")

2、初始化:
if (!AfxOleInit())//这就是初始化COM库 
{
AfxMessageBox(_T("OLE初始化出错!"));
return FALSE;
}

3、m_pConnection实例连接Excel:
_bstr_t bstrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\test2.xlsx;Extended Properties=Excel 12.0 Xml;HDR=No;IMEX=1";
try {
HRESULT hr;
hr = m_pConnection.CreateInstance("ADODB.Connection");
if (SUCCEEDED(hr))
{
//m_pConnection->PutCursorLocation(adUseClient);
m_pConnection->CommandTimeout=0;
m_pConnection->Open(bstrConn, "", "", adModeUnknown);
}
}
catch (_com_error e)
{

CString errormessage;
errormessage.Format(_T("打开Excel失败!\r\n错误信息:%s"),e.ErrorMessage());
AfxMessageBox(errormessage);
}


运行这段代码提示如下错误:

当把连接字符串改为:
_bstr_t bstrConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\\test2.xlsx;Extended Properties='Excel 12.0 Xml;HDR=No;IMEX=1;'";

注意:改动之处是在Extended Propertiec=后面加了单引号,且在IMEX=1之后加了分号,因为我查了一些教程就是这么写的,也有上面的那种写法,但还是出现错误,会提示:

如果去掉IMEX=1之后的分号,就出现前面的 那种错误提示,如果在Extended Properties=之后加双引号的话,也出现前面的那种错误,总之我试过了网上的多个教程都会出现这两种错误提示,我实在是没招了,求大神们帮忙一下吧,这个问题到底是出在哪儿?谢谢了。。。
Data Source=D:\\这个路径双斜杠、单斜杠,反的都试过了,也不行。。。
...全文
1173 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyq5945 2017-03-28
  • 打赏
  • 举报
回复
这个方式看看可以不。
Toppeak2015 2017-03-25
  • 打赏
  • 举报
回复
引用 6 楼 zyq5945 的回复:
你机器上装了相应的office版本了吗? 或者AccessDatabaseEngine_X64.exe换成32位的试试。
我的系统是64位的win7,office2010已经安装过,AccessDatabaseEngine_X64.exe这个也安装了,但还是出现同样的错误。
Toppeak2015 2017-03-25
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
谢谢,我试一下。
赵4老师 2017-03-20
  • 打赏
  • 举报
回复
在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 所以要注意: 在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。 且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll 在win64位系统下设置32位程序使用的数据库别名要用c:\windows\syswow64\cliconfg.exe 在win64位系统下设置32位程序使用的系统DSN要用c:\windows\syswow64\odbcad32.exe 64 位 Windows 平台注意点之文件系统重定向 http://www.cnblogs.com/jiake/p/4981555.html 64 位 Windows 平台注意点之注册表重定向 http://www.cnblogs.com/jiake/p/4956218.html
zyq5945 2017-03-17
  • 打赏
  • 举报
回复
估计是连接字符串错误,可以用ADO助手测试下。
Toppeak2015 2017-03-17
  • 打赏
  • 举报
回复
还是不行。。。
zyq5945 2017-03-17
  • 打赏
  • 举报
回复
你机器上装了相应的office版本了吗? 或者AccessDatabaseEngine_X64.exe换成32位的试试。
Toppeak2015 2017-03-17
  • 打赏
  • 举报
回复
引用 3 楼 zyq5945 的回复:
估计是连接字符串错误,可以用ADO助手测试下。

还是不行啊,有错误,我把ADO助手里面的Data Source路径改为我的Excel文件的路径,保留助手其他的字符串,出现这样的错误:

请问大哥这是哪儿出了问题?
Toppeak2015 2017-03-17
  • 打赏
  • 举报
回复
好的,我找ADO助手试试

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧