void ReadExcel()
{
CDatabase database;
CString sSql;
CString sItem1, sItem2 , sItem3;
CString sDriver;
CString sDsn;
CString sFile,sPath;
//獲取主程序所在路徑,存在sPath中
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer();
int nPos;
nPos=sPath.ReverseFind (‘\\‘);
sPath=sPath.Left (nPos);
sFile = sPath + "\\Demo.xls"; // 將被讀取的Excel文件名
// 檢索是否安裝有Excel驅(qū)動(dòng) "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 沒(méi)有發(fā)現(xiàn)Excel驅(qū)動(dòng)
AfxMessageBox("沒(méi)有安裝Excel驅(qū)動(dòng)!");
return;
}
// 創(chuàng)建進(jìn)行存取的字符串
sDsn.Format("ODBC;DRIVER={%s};DSN=‘‘;DBQ=%s", sDriver, sFile);
TRY
{
// 打開(kāi)數(shù)據(jù)庫(kù)(既Excel文件)
database.Open(NULL, false, false, sDsn);
CRecordset recset(&database);
// 設(shè)置讀取的查詢(xún)語(yǔ)句.注意此處表名的寫(xiě)法,excel里的表默認(rèn)為系統(tǒng)表所以訪問(wèn)表時(shí)表名應(yīng)為[表名$]
sSql = "SELECT 考生編號(hào),考生姓名,來(lái)源 "
"FROM [student2$] "
"ORDER BY 考生編號(hào) ";
// 執(zhí)行查詢(xún)語(yǔ)句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 獲取查詢(xún)結(jié)果
while (!recset.IsEOF())
{
//讀取Excel內(nèi)部數(shù)值
recset.GetFieldValue("考生編號(hào)", sItem1);
recset.GetFieldValue("考生姓名", sItem2);
recset.GetFieldValue("來(lái)源", sItem3);
//顯示記取的內(nèi)容
m_ExcelList.AddString( sItem1 + " --> "+sItem2 );
// 移到下一行
recset.MoveNext();
}
// 關(guān)閉數(shù)據(jù)庫(kù)
database.Close();
}
CATCH(CDBException, e)
{
// 數(shù)據(jù)庫(kù)操作產(chǎn)生異常時(shí)...
AfxMessageBox("數(shù)據(jù)庫(kù)錯(cuò)誤: " + e->m_strError);
}
END_CATCH;
}
聯(lián)系客服