vc读写Excel文件的方法_hiyen_快乐学生

来源:百度文库 编辑:神马文学网 时间:2024/04/30 21:18:28
void ReadExcel()
{
CDatabase database;
CString sSql;
CString sItem1, sItem2 , sItem3;
CString sDriver;
CString sDsn;
CString sFile,sPath;
//获取主程序所在路径,存在sPath中
GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer();
int nPos;
nPos=sPath.ReverseFind (‘\\‘);
sPath=sPath.Left (nPos);
sFile = sPath + "\\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);
// 设置读取的查询语句.注意此处表名的写法,excel里的表默认为系统表所以访问表时表名应为[表名$]
sSql = "SELECT 考生编号,考生姓名,来源 "
"FROM [student2$] "
"ORDER BY 考生编号 ";
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue("考生编号", sItem1);
recset.GetFieldValue("考生姓名", sItem2);
recset.GetFieldValue("来源", sItem3);
//显示记取的内容
m_ExcelList.AddString( sItem1 + " --> "+sItem2 );
// 移到下一行
recset.MoveNext();
}
// 关闭数据库
database.Close();
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
AfxMessageBox("数据库错误: " + e->m_strError);
}
END_CATCH;
}