void CODBCTestDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
CDatabase database;
CString sDriver = _T("MICROSOFT EXCEL DRIVER (*.XLS)"); // Excel安装驱动
CString sExcelFile,sPath;
CString sSql;
//获取主程序所在路径,存在sPath中
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
sExcelFile = sPath + _T("\\Demo.xls"); // 要建立的Excel文件
TRY
{
// 创建进行存取的字符串
sSql.Format(_T("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s"),sDriver, sExcelFile, sExcelFile);
// 创建数据库 (既Excel表格文件)
if( database.OpenEx(sSql,CDatabase::noOdbcDialog) )
{
// 创建表结构(姓名、年龄)
SYSTEMTIME st;
GetLocalTime(&st);
CString strDate;
strDate.Format(_T("%04d%02d%02d"),st.wYear,st.wMonth,st.wDay);
sSql.Format(_T("CREATE TABLE %s (订饭时间 TEXT,姓名 TEXT,订饭类型 TEXT,口味 TEXT,数量 NUMBER,价格 NUMBER)"),strDate);
database.ExecuteSQL(sSql);
int count = m_list.GetItemCount();
int nItem = 0;
CString strFieldDate;
CString strFieldName;
CString strFieldType;
CString strFieldTaste;
CString strFieldNum;
CString strFieldPrice;
while (nItem < count)
{
strFieldDate = m_list.GetItemText(nItem,0);
strFieldName = m_list.GetItemText(nItem,1);
strFieldType = m_list.GetItemText(nItem,2);
strFieldTaste = m_list.GetItemText(nItem,3);
strFieldNum = m_list.GetItemText(nItem,4);
strFieldPrice = m_list.GetItemText(nItem,5);
sSql.Format(_T("INSERT INTO %s (订饭时间,姓名,订饭类型,口味,数量,价格) VALUES ('%s','%s','%s','%s',%d,%d)"),strDate,strFieldDate,strFieldName,strFieldType,strFieldTaste,_ttoi(strFieldNum),_ttoi(strFieldNum)*10);
database.ExecuteSQL(sSql);
++nItem;
}
// 插入数值
//sSql.Format(_T("INSERT INTO %s (订饭时间,姓名,订饭类型,口味,数量,价格) VALUES ('2013-1-9','王秋森','炒饭')"),strDate);
//database.ExecuteSQL(sSql);
}
// 关闭数据库
database.Close();
AfxMessageBox(_T("Excel文件写入成功!"));
}
CATCH(CDBException, e)
{
// e->m_nRetCode;
e->ReportError();
}
END_CATCH;
/*
CATCH_ALL(e)
{
//e->GetErrorMessage();
e->ReportError();
e->m_nr
}
END_CATCH_ALL;
*/
}
//
//名称:GetExcelDriver
//功能:获取ODBC中Excel驱动
//作者:徐景周(jingzhou_xu@163.net)
//组织:未来工作室(Future Studio)
//日期:2002.9.1
/
CString CODBCTestDlg::GetExcelDriver()
{
wchar_t szBuf[2001];
WORD cbBufMax = 2000;
WORD cbBufOut;
wchar_t *pszBuf = szBuf;
CString sDriver;
// 获取已安装驱动的名称(涵数在odbcinst.h里)
if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut))
return _T("");
// 检索已安装的驱动是否有Excel...
do
{
if (wcsstr(pszBuf, _T("Excel")) != 0)
{
//发现 !
sDriver = CString(pszBuf);
break;
}
pszBuf = wcschr(pszBuf, '\0') + 1;
}
while (pszBuf[1] != '\0');
return sDriver;
}
使用ODBC写execl
最新推荐文章于 2023-07-20 11:45:28 发布