CString FilePathName ;
CFileDialog dlg(TRUE,"xls file(*.xls)|*.xls", NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
"xls file(*.xls)|*.xls||"); //TRUE为OPEN对话框,FALSE为SAVE AS对话框
if(dlg.DoModal()==IDOK)
{
FilePathName = dlg.GetPathName();
GetDlgItem(IDC_EDIT1) -> SetWindowText( FilePathName );
}
if(database.IsOpen())
database.Close();
//读入EXCEL
CString sDriver = _T( "MICROSOFT EXCEL DRIVER (*.xls)" ); // Excel驱动
CString sDsn;
sDsn.Format(_T( "ODBC;DRIVER={%s};DSN='';DBQ=%s" ), sDriver, FilePathName);
BOOL result = database.Open(NULL, false , false , sDsn);
if(result)
{
AfxMessageBox("Open OK !");
}
// CRecordset recset(&database);
//
// // 设置读取的查询语句.
// sSql .Format( "SELECT Name, Age FROM %s ORDER BY Name " , "demo");
//
//
//
// // 执行查询语句
// recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// // 获取查询结果
// while (!recset.IsEOF())
// {
// //读取Excel内部数值
// recset.GetFieldValue(_T( "Name" ), sItem1);
// recset.GetFieldValue(_T( "Age" ), sItem2);
// AfxMessageBox(sItem1+"--"+sItem2);
// // 移到下一行
// recset.MoveNext();
// }
// 关闭数据库
database.Close();
//
void COutToExcel::TestRead()
{
//读入EXCEL
CString sItem1, sItem2,sItem3, sItem4;
CString sDriver;
CString sDsn;
CString sFile = _T( "./data/SeriesData.xls" ); // 将被读取的Excel文件名
// 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)"
sDriver = GetExcelDriver();
if (sDriver.IsEmpty())
{
// 没有发现Excel驱动
AfxMessageBox(_T( "没有安装Excel驱动!" ));
return ;
}
// 创建进行存取的字符串
sDsn.Format(_T( "ODBC;DRIVER={%s};DSN='';DBQ=%s" ), sDriver, sFile);
TRY
{
// 打开数据库(既Excel文件)
database.Open(NULL, false , false , sDsn);
CRecordset recset(&database);
// 设置读取的查询语句. 从指定的表中选出的指定的列
sSql .Format( _T("SELECT Name,Val,WeightMeter,UnitPrice FROM %s ORDER BY Name" ),"[天语二代$]" ); //, "天语二代" "Public_UnitPrice"
// 执行查询语句
recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly);
// 获取查询结果
while (!recset.IsEOF())
{
//读取Excel内部数值
//(Name,Val,WeightMeter,UnitPrice)
recset.GetFieldValue(_T( "Name" ), sItem1);
recset.GetFieldValue(_T( "Val" ), sItem2);
recset.GetFieldValue(_T( "WeightMeter" ), sItem3);
recset.GetFieldValue(_T( "UnitPrice" ), sItem4);
if(sItem1 != "")
{
AfxMessageBox(sItem1 + "--" + sItem2+ "--" + sItem3+ "--" + sItem4);
}
// 移到下一行
recset.MoveNext();
}
// 关闭数据库
database.Close();
}
CATCH(CDBException, e)
{
// 数据库操作产生异常时...
AfxMessageBox(_T( "数据库错误: " ) + e->m_strError);
}
END_CATCH;
}