vc++ 2008 读取 excel 2010 文件问题,无解,求帮忙

[复制链接]
查看11 | 回复2 | 2021-1-27 06:45:33 | 显示全部楼层 |阅读模式
读取excel文件的问题代码:
TRY
{
//打开数据库,建立与这个Excel对应的Database
BOOLret=database.Open(NULL,false,false,sDsn);
CRecordsetrecset(&database);
//设置读取的查询语句
sSql="SELECTnumber,addressee,address,sendtime,senderidFROMd:\data\dd.xlsx";
//执行查询语句,打开表格
recset.Open(CRecordset::forwardOnly,sSql,CRecordset::readOnly);//这一行出现异常
//获取查询结果
while(!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue(_T("number"),number);
recset.GetFieldValue(_T("addressee"),addressee);
recset.GetFieldValue(_T("address"),address);
recset.GetFieldValue(_T("sendtime"),sendtime);
recset.GetFieldValue(_T("senderid"),senderid);
//移到下一行
recset.MoveNext();
}
//关闭数据库
database.Close();
}
CATCH(CDBException,e)
{
//数据库操作产生异常时...
returnfalse;
}
END_CATCH;
returntrue;

上面代码中
sDsn="ODBC;DRIVER={MicrosoftExcelDriver(*.xls,*.xlsx,*.xlsm,*.xlsb)};DSN='';DBQ=d:\data\dd.xlsx"

最后,CDBException,e中的抛出异常如下:
m_strError="MicrosoftAccess数据库引擎找不到对象“xlsx”。请确保该对象存在,并正确拼写其名称和路径名。如果“xlsx”不是本地对象,请检查网络连接或与服务器管理员联系。"
m_strStateNativeOrigin="State:S0002,Native:-1305,Origin:[Microsoft][ODBCExcelDriver]"
有没有哪位碰到同样的问题?
分 -->
回复

使用道具 举报

千问 | 2021-1-27 06:45:33 | 显示全部楼层
直接用office的接口不行吗简单方便快捷
回复

使用道具 举报

千问 | 2021-1-27 06:45:33 | 显示全部楼层
找到原因啦,
sSql="SELECTnumber,addressee,address,sendtime,senderidFROMd:\data\dd.xlsx";
这句中的d:\data\dd.xlsx改成dd.xlsx中的表格名称就可以啦,比如
sSql="SELECTnumber,addressee,address,sendtime,senderidFROM[sheet1$],就OK啦。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行