level 1

void CProGraduationDlg::OnClickedInputTrackMotion(){
// TODO: 在此添加控件通知处理程序代码
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对象中与要求的字符匹配的最后一个字符的索引;
//如果没有找到需要的字符则返回-1。
sPath = sPath.Left(nPos); //获取前nPos个字符
sFile = sPath + "\\Demo.xlsx"; // 将被读取的Excel文件名
// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xlsx)"
sDriver = GetExcelDriver();
if(sDriver.IsEmpty())
{
// 没有发现Excel驱动
MessageBox(_T("没有安装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 Num,Name, Age " //设置索引顺序
"FROM Exceldemo " ;
"ORDER BY Name ";
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
recset.GetFieldValue("Num", sItem1);
recset.GetFieldValue("Name", sItem2);
recset.GetFieldValue("Age", sItem3);
//显示记取的内容
m_ExcelList.AddString( sItem1 + " --> "+sItem2+ " --> "+sItem3 );
// 移到下一行
recset.MoveNext();
}
// 关闭数据库
database.Close();
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
MessageBox(_T("数据库错误: " + e->m_strError));
}
END_CATCH;
}