首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

使用ODBC读取Excel表格出现异常

2012-11-14 
使用ODBC读取Excel表格出现错误我在网上看到的用VC对EXCEL表的操作,他先是自己创建了一个EXCEL,然后再对其

使用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; 
}

[解决办法]
CString sFile = "C:\\credit.xls ";// 将被读取的Excel文件名
看看你文件存在吗?文件名称对吗?

Sql = "SELECT * FROM credit "; 这个里面的credit 有这个表? Sheet名称?
[解决办法]

探讨
路径和表名都对,我找到原因了,我用的是Excel2007,改成Excel2003的表就可以了。谢谢你了

热点排行