VS2008用mfc读Excel文件
2013-10-20 12:32
561 查看
1、获取驱动代码:自己添加的成员函数CString CMFC_SEECOLORDlg::GetExcelDriver(void),这里参考自:http://bbs.csdn.net/topics/340079163#new_post
2、读Excel的代码:加一个读Excel按钮,添加它的响应函数void CMFC_SEECOLORDlg::OnBnClickedButtonRead(),百度得到的,嘿嘿、、
3、写Excel的代码:加一个写Excel按钮,添加它的响应函数void CMFC_SEECOLORDlg::OnBnClickedButtonWrite(),也是百度了,文库里有下载、、
CString CMFC_SEECOLORDlg::GetExcelDriver(void) { wchar_t szBuf[2001]; wchar_t excl[]=L"Excel"; WORD cbBufMax = 2000; WORD cbBufOut; wchar_t *pszBuf = szBuf; CString sDriver; // 获取已安装驱动的名称(涵数在odbcinst.h里) if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut)) return L""; // 检索已安装的驱动是否有Excel... do { if (wcsstr(pszBuf, excl) != 0) { //发现 ! sDriver = CString(pszBuf); break; } wchar_t ze={'\0'}; pszBuf = wcschr(pszBuf,ze) + 1; } while (pszBuf[1] != '\0'); return sDriver; }
2、读Excel的代码:加一个读Excel按钮,添加它的响应函数void CMFC_SEECOLORDlg::OnBnClickedButtonRead(),百度得到的,嘿嘿、、
void CMFC_SEECOLORDlg::OnBnClickedButtonRead() { // TODO: Add your control notification handler code here 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 (); // MessageBox(sPath); int nPos; nPos=sPath.ReverseFind ('\\'); sPath=sPath.Left (nPos); sFile = sPath + _T("\\Demo.xls"); // 将被读取的Excel文件名 // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)" sDriver = GetExcelDriver(); MessageBox(sDriver); 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 = "SELECT Num,Name, Age " //设置索引顺序 "FROM Exceldemo " ; "ORDER BY Name "; // 执行查询语句 recset.Open(CRecordset::forwardOnly, sSql, CRecordset::readOnly); // 获取查询结果 while (!recset.IsEOF()) { //读取Excel内部数值 recset.GetFieldValue(_T("Num"), sItem1); recset.GetFieldValue(_T("Name"), sItem2); recset.GetFieldValue(_T("Age"), sItem3); //显示记取的内容 m_ExcelList.AddString( sItem1 + _T(" --> ")+sItem2+ _T(" --> ")+sItem3 ); // 移到下一行 recset.MoveNext(); } // 关闭数据库 database.Close(); } CATCH(CDBException, e) { // 数据库操作产生异常时... AfxMessageBox(_T("数据库错误: ")+ e->m_strError); } END_CATCH; }
3、写Excel的代码:加一个写Excel按钮,添加它的响应函数void CMFC_SEECOLORDlg::OnBnClickedButtonWrite(),也是百度了,文库里有下载、、
void CMFC_SEECOLORDlg::OnBnClickedButtonWrite() { // TODO: Add your control notification handler code here // 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) ) { // 创建表结构(序号、姓名、年龄) sSql = "CREATE TABLE Exceldemo (Num Number,Name TEXT,Age NUMBER)";//可以用中文表示序号,姓名,年龄等 database.ExecuteSQL(sSql); // 插入数值 sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (1,'小西',24)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (2,'小东',22)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (3,'小朱',25)"; database.ExecuteSQL(sSql); sSql = "INSERT INTO Exceldemo (Num,Name,Age) VALUES (4,'小鸭',27)"; database.ExecuteSQL(sSql); } // 关闭数据库 database.Close(); AfxMessageBox(_T("Excel文件写入成功!")); } CATCH_ALL(e) { TRACE1("Excel驱动没有安装: %s",sDriver); } END_CATCH_ALL; }
相关文章推荐
- 【转】VS2008环境使用MFC导入Excel文件中的数据
- MFC + VS2008 对Excel文件的操作
- MFC 与Excel文件的交互操作
- MFC将ListCtrl列表导出到Excel-采用文件流写Excel兼容Html格式(不需要Excel环境)
- VS2008中C++打开Excel(MFC)
- VS2008平台下,MFC操作EXCEL简单示例
- VS2008 + Opencv2.1 读取图片像素输出至Excel文件
- 解决VS2008中MFC静态编译出来的文件太大问题
- VC/MFC实现写Excel文件
- MFC学习之 将 list 表里的信息写入.txt文本 和 .xls EXCEL 文件中(ODBC)
- 在VS2010中利用MFC读取word、ppt、excel格式文件
- 利用MFC读取Excel文件
- VS2008环境使用MFC操作读取excel文件(OLE/COM)
- MFC 打开已经存在的EXCEL文件
- VS2008中,MFC对话框类实现类似QQ拖拽上传文件的功能,CWnd::OnDropFiles
- VS2010中用MFC读取word、ppt、excel格式文件
- 解决VS2008中MFC静态编译出来的文件太大问题
- VS2008 + Opencv2.1 读取图片像素输出至Excel文件
- MFC之通过OLE实现对Excel文件的读写
- VS2008 + Opencv2.1 读取图片像素输出至Excel文件