我用ado方法写了一个数据查询程序,其中一种输入为excel文件,但读取过程中总遇到一些字段的值不能读到(多数为数字的内容,但excel表单元格属性都是文字)大致代码如下:
CString str, SheetName;
// 定义ADO连接、命令、记录集变量指针
_ConnectionPtr pSrcConnection;
_RecordsetPtr pSrcRecordset;
CString SQLString; pSrcConnection.CreateInstance(__uuidof(Connection));
SQLString.Format("DRIVER={Microsoft Excel Driver (*.xls)};FIRSTROWHASNAMES=1;READONLY=true;DriverId=790;HDR=No;DBQ=%s", FileName); //open source DB
try
{
pSrcConnection->Open(_bstr_t(SQLString),"","",adModeUnknown);
}
catch(_com_error e)
{
AfxMessageBox(e.ErrorMessage());
return -3;


pSrcRecordset.CreateInstance(__uuidof(Recordset)); COleVariant vtOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR); SQLString.Format("SELECT * FROM [week1$]");
try
{
pSrcRecordset = pSrcConnection->Execute(_bstr_t(SQLString), &vtOptional, adCmdText);
}
catch(_com_error *e)
{
pSrcConnection->Close();
AfxMessageBox(e->ErrorMessage());
return -3;
}//读某行字段的代码是
_variant_t vValue, vIndex;
CString strDept;

//get Dept
vIndex = (long)2;
vValue = pSrcRecordset->GetCollect(vIndex);
if (vValue.vt == VT_NULL)
      strDept = "";
else
      strDept = (LPCSTR)_bstr_t(vValue);//结束
pSrcRecordset->Close();
pSrcRecordset = NULL;
pSrcConnection->Close();