在stdafx.h头文件中引入ODBC的头文件:
#include <afxdb.h>
#include <odbcinst.h>
void CExcelTestDlg::OnButton2()
{
CDatabase db;
CString path="D:\\123.xlsx";
CString strDriver="MICROSOFT EXCEL DRIVER (*.XLS, *.xlsx, *.xlsm, *.xlsb)";
CString sDsn;
sDsn.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",strDriver,path,path);//FIRSTROWHASNAMES=1表示第一行为列名
db.OpenEx(sDsn,CDatabase::noOdbcDialog);//注意用OpenEx不用Open
CStringArray arr;
CString val;
CRecordset prs(&db);
if (prs.Open(CRecordset::forwardOnly,"SELECT * FROM [Sheet1$]",CRecordset::readOnly))//Sheet1为工作簿名称
{
while(!prs.IsEOF())
{
prs.GetFieldValue("fieldName",val);
arr.Add(val);
prs.MoveNext();
}
prs.Close();
}
db.Close();
val.Format("%d",arr.GetSize());
MessageBox(arr.GetAt(0)+"count:"+val);
}