急求vc读取Excel错误有关问题
急求vc读取Excel异常问题
在网上找的代码,vc操作读取Excel文件,
CDatabase database;
CString sSql;
CString sItem1,sItem2,sItem3;
CString sDriver;
CString sDsn;
//CString sFile = "Demo.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 name,value from demo;";
sSql = "SELECT name, value "
"FROM demo "
"ORDER BY Name ";
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); //??????????????????????
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue( "name", sItem1);
recset.GetFieldValue( "value ", sItem2);
AfxMessageBox(sItem1);
AfxMessageBox(sItem2);
//recset.GetFieldValue( "部门 ", sItem3);
// 移到下一行
recset.MoveNext();
}
// 关闭数据库
database.Close();
AfxMessageBox("ok import");
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
AfxMessageBox( "数据库错误: " + e-> m_strError);
}
END_CATCH;
总是有一句过不了啊:// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); //??????????????????????
不知道什么原因?
现在的异常是:Microsoft Jet 数据库引擎找不到对象'demo'。请确定对象是否存在,并正确地写出它的名
称和路径。
网上操作Excel都是这个代码,难道大家都能顺利通过吗?
------解决方案--------------------
select name,value from [sheet1$]
这儿是worksheet的名字,不是文件名。
------解决方案--------------------
在网上找的代码,vc操作读取Excel文件,
CDatabase database;
CString sSql;
CString sItem1,sItem2,sItem3;
CString sDriver;
CString sDsn;
//CString sFile = "Demo.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 name,value from demo;";
sSql = "SELECT name, value "
"FROM demo "
"ORDER BY Name ";
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); //??????????????????????
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue( "name", sItem1);
recset.GetFieldValue( "value ", sItem2);
AfxMessageBox(sItem1);
AfxMessageBox(sItem2);
//recset.GetFieldValue( "部门 ", sItem3);
// 移到下一行
recset.MoveNext();
}
// 关闭数据库
database.Close();
AfxMessageBox("ok import");
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
AfxMessageBox( "数据库错误: " + e-> m_strError);
}
END_CATCH;
总是有一句过不了啊:// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); //??????????????????????
不知道什么原因?
现在的异常是:Microsoft Jet 数据库引擎找不到对象'demo'。请确定对象是否存在,并正确地写出它的名
称和路径。
网上操作Excel都是这个代码,难道大家都能顺利通过吗?
------解决方案--------------------
select name,value from [sheet1$]
这儿是worksheet的名字,不是文件名。
------解决方案--------------------