我在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:\\這個路徑雙斜杠、單斜杠,反的都試過了,也不行。。。
uj5u.com熱心網友回復:
http://blog.csdn.net/fhfanxin/article/details/50805920uj5u.com熱心網友回復:
還是不行。。。uj5u.com熱心網友回復:
估計是連接字串錯誤,可以用ADO助手測驗下。uj5u.com熱心網友回復:
好的,我找ADO助手試試uj5u.com熱心網友回復:
還是不行啊,有錯誤,我把ADO助手里面的Data Source路徑改為我的Excel檔案的路徑,保留助手其他的字串,出現這樣的錯誤:

請問大哥這是哪兒出了問題?
uj5u.com熱心網友回復:
你機器上裝了相應的office版本了嗎?或者AccessDatabaseEngine_X64.exe換成32位的試試。
uj5u.com熱心網友回復:
在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
uj5u.com熱心網友回復:
謝謝,我試一下。
uj5u.com熱心網友回復:
我的系統是64位的win7,office2010已經安裝過,AccessDatabaseEngine_X64.exe這個也安裝了,但還是出現同樣的錯誤。
uj5u.com熱心網友回復:
用這個方式看看可以不。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/105214.html
標籤:數據庫
