使用ODBC读取Excel表格出现错误
我在网上看到的用VC对EXCEL表的操作,他先是自己创建了一个EXCEL,然后再对其进行读取,可以操作成功.但是我自己新建一个Excel表 credit.xls,进行读取,将程序中的文件名,表名,都改为如下,编译通过但是读取时老是出现Microsoft Jet数据库引擎找不到对象 "credit ",请确定对象是否存在,并正确地写出了它的名称和路径!
这个错误总是不能解决,请各位大侠帮我看看,非常感谢!
void CQueryView::ReadExcel()
{
CDatabase database;
CString sSql;
CString sItem1, sItem2;
CString sDriver;
CString sDsn;
CString sFile = "C:\\credit.xls ";// 将被读取的Excel文件名
// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls) "
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox( "没有安装Excel驱动! ");
return;
}
// 创建进行存取的字符串
sDsn.Format( "ODBC;DRIVER={%s};DSN= ' ';DBQ=%s ",sDriver,sFile);
TRY
{
// 打开数据库(既Excel文件)
database.Open(NULL, false, false, sDsn);
CRecordset recset(&database);
// 设置读取的查询语句
sSql = "SELECT * FROM credit ";
//执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue( "Name ", sItem1);
recset.GetFieldValue( "Age ", sItem2);
CString strMsg;
strMsg.Format( "Name:%s,Age:%s ",sItem1,sItem2);
AfxMessageBox(strMsg);
// 移到下一行
recset.MoveNext();
}
// 关闭数据库
database.Close();
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
AfxMessageBox( "数据库错误: " + e-> m_strError);
}
END_CATCH;
}