社区
VC.NET
帖子详情
VC++导出数据到Excel实现,最好有例子!谢谢!
heyingss
2015-02-15 10:50:55
VC++导出数据到Excel实现,最好有例子!谢谢!
...全文
554
4
打赏
收藏
VC++导出数据到Excel实现,最好有例子!谢谢!
VC++导出数据到Excel实现,最好有例子!谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
wanjiAri
2015-11-25
打赏
举报
回复
本人常用的一种方式,采用另存为txt的方式,换行用\r\n,要是分开的数据用\t间隔。另存为的txt用excel打开,挺方便的
heyingss
2015-03-02
打赏
举报
回复
我自己又研究了一下,以下代码供大家参考: #include "stdafx.h" #include "RepairData.h" #include "LogInfo.h" #include ".\loginfo.h" #include <odbcinst.h> #include <afxdb.h> #include <comdef.h> #include <io.h> 。。。。。。 //获取ODBC中Excel驱动函数 CString CLogInfo::GetExcelDriver() { char szBuf[2001]; WORD cbBufMax = 2000; WORD cbBufOut; char *pszBuf = szBuf; CString sDriver; // 获取已安装驱动的名称(涵数在odbcinst.h里) if (!SQLGetInstalledDrivers(szBuf, cbBufMax, &cbBufOut)) return ""; // 检索已安装的驱动是否有Excel... do { if (strstr(pszBuf, "Excel") != 0) { //发现 ! sDriver = CString(pszBuf); break; } pszBuf = strchr(pszBuf, '\0') + 1; } while (pszBuf[1] != '\0'); return sDriver; } /////////////////////////////////////////////////////////////////////////////// // BOOL MakeSurePathExists( CString &Path,bool FilenameIncluded) // 参数: // Path 路径 // FilenameIncluded 路径是否包含文件名 // 返回值: // 文件是否存在 // 说明: // 判断Path文件(FilenameIncluded=true)是否存在,存在返回TURE,不存在返回FALSE // 自动创建目录 // /////////////////////////////////////////////////////////////////////////////// BOOL CLogInfo::MakeSurePathExists( CString &Path, bool FilenameIncluded) { int Pos=0; while((Pos=Path.Find('\\',Pos+1))!=-1) CreateDirectory(Path.Left(Pos),NULL); if(!FilenameIncluded) CreateDirectory(Path,NULL); // return ((!FilenameIncluded)?!_access(Path,0): // !_access(Path.Left(Path.ReverseFind('\\')),0)); return !_access(Path,0); } //获得默认的文件名 BOOL CLogInfo::GetDefaultXlsFileName(CString& sExcelFile) { ///默认文件名:yyyymmddhhmmss.xls CString timeStr; CTime day; day=CTime::GetCurrentTime(); int filenameday,filenamemonth,filenameyear,filehour,filemin,filesec; filenameday=day.GetDay();//dd filenamemonth=day.GetMonth();//mm月份 filenameyear=day.GetYear();//yyyy filehour=day.GetHour();//hh filemin=day.GetMinute();//mm分钟 filesec=day.GetSecond();//ss timeStr.Format("%04d%02d%02d%02d%02d%02d",filenameyear,filenamemonth,filenameday,filehour,filemin,filesec); //AfxMessageBox(timeStr); sExcelFile = timeStr + ".xls"; // prompt the user (with all document templates) CFileDialog dlgFile(FALSE,".xls",sExcelFile); CString title; CString strFilter; title = "导出"; strFilter = "Excel文件(*.xls)"; strFilter += (TCHAR)'\0'; // next string please strFilter += _T("*.xls"); strFilter += (TCHAR)'\0'; // last string dlgFile.m_ofn.nMaxCustFilter++; dlgFile.m_ofn.nFilterIndex = 1; // append the "*.*" all files filter CString allFilter; VERIFY(allFilter.LoadString(AFX_IDS_ALLFILTER)); strFilter += allFilter; strFilter += (TCHAR)'\0'; // next string please strFilter += _T("*.*"); strFilter += (TCHAR)'\0'; // last string dlgFile.m_ofn.nMaxCustFilter++; dlgFile.m_ofn.lpstrFilter = strFilter; dlgFile.m_ofn.lpstrTitle = title; if (dlgFile.DoModal()==IDCANCEL) return FALSE; // open cancelled sExcelFile.ReleaseBuffer(); if (MakeSurePathExists(sExcelFile,true)) { if(!DeleteFile(sExcelFile)) { // delete the file AfxMessageBox("覆盖文件时出错!"); return FALSE; } } return TRUE; } /////////////////////////////////////////////////////////////////////////////// // void GetExcelDriver(CListCtrl* pList, CString strTitle) // 参数: // pList 需要导出的List控件指针 // strTitle 导出的数据表标题 // 说明: // 导出CListCtrl控件的全部数据到Excel文件。Excel文件名由用户通过“另存为” // 对话框输入指定。创建名为strTitle的工作表,将List控件内的所有数据(包括 // 列名和数据项)以文本的形式保存到Excel工作表中。保持行列关系。 // // edit by [r]@dotlive.cnblogs.com /////////////////////////////////////////////////////////////////////////////// void CLogInfo::ExportListToExcel(CSortListCtrl &pList, CString strTitle) { CString warningStr; if (pList.GetItemCount()>0) { CDatabase database; CString sDriver; CString sExcelFile; CString sSql; CString tableName = strTitle; // 检索是否安装有Excel驱动 "Microsoft Excel Driver (*.xls)" sDriver = GetExcelDriver(); // AfxMessageBox(sDriver); if (sDriver.IsEmpty()) { // 没有发现Excel驱动 AfxMessageBox("没有安装Excel!\n请先安装Excel软件才能使用导出功能!"); return; } ///默认文件名 if (!GetDefaultXlsFileName(sExcelFile)) return; // 创建进行存取的字符串 sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s",sDriver, sExcelFile, sExcelFile); //AfxMessageBox(sSql); // 创建数据库 (既Excel表格文件) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // 创建表结构 int i; LVCOLUMN columnData; CString columnName; int columnNum = 0; CString strH; CString strV; sSql = ""; strH = ""; columnData.mask = LVCF_TEXT; columnData.cchTextMax =100; columnData.pszText = columnName.GetBuffer (100); for(i=0;pList.GetColumn(i,&columnData);i++) { if (i!=0) { sSql = sSql + ", " ; strH = strH + ", " ; } sSql = sSql + " " + columnData.pszText +" TEXT"; strH = strH + " " + columnData.pszText +" "; } columnName.ReleaseBuffer (); columnNum = i; sSql = "CREATE TABLE " + tableName + " ( " + sSql + " ) "; // AfxMessageBox(sSql); database.ExecuteSQL(sSql); // 插入数据项 int nItemIndex; for (nItemIndex=0;nItemIndex<pList.GetItemCount ();nItemIndex++){ strV = ""; for(i=0;i<columnNum;i++) { if (i!=0) { strV = strV + ", " ; } strV = strV + " '" + pList.GetItemText(nItemIndex,i) +"' "; } sSql = "INSERT INTO "+ tableName +" ("+ strH + ")" +" VALUES("+ strV + ")"; // AfxMessageBox(sSql); database.ExecuteSQL(sSql); } } // 关闭数据库 database.Close(); warningStr.Format("导出文件保存于%s!",sExcelFile); AfxMessageBox(warningStr); }else{ AfxMessageBox("目前没有审核操作日志信息!"); } }
蝶恋花雨
2015-02-15
打赏
举报
回复
http://www.360doc.com/content/13/0614/16/3402399_292842196.shtml
VS2010的
蝶恋花雨
2015-02-15
打赏
举报
回复
参考。看看能帮助你不。
http://blog.163.com/zhongguojiliangfgg@126/blog/static/4851001720099219397848/
VC中将
数据
导出
到
Excel
表格中
由于项目需要,要把
数据
库中的
数据
导出
生成
excel
表格,
在VC++中
实现
Excel
数据
的
导出
/导入
只是简单的把功能
实现
了,在
导出
大量
数据
的时候有明显的延迟,也只能先这样了,那有时间去优化啊,估计在使用了多线程等优化手段后速度会有大的改善。把这段代码放在自己的空间里,以后也许用的着。
1、先在对话框中加入一个按钮,ID IDC_BUTTON_
EXCEL
Caption
导出
Excel
。双击该按钮,增加成员函数void CMPIClientView::On
Excel
()。
2、在BOOL MPIClient::InitInstance()中,dlg.DoModal();之前增
V
C++
与MFC
实现
Excel
考勤
数据
处理的完整教程
Visual
C++
(V
C++
) 是微软公司推出的一款集成开发环境(IDE),它允许开发者使用
C++
语言以及微软基础类库(MFC)创建各种应用程序。V
C++
支持面向对象的编程范式,通过提供丰富的API和开发框架,成为很多Windows桌面和底层开发者的首选。在第二章中,我们深入探讨了COM接口的基础知识,并具体到如何使用这些接口与
Excel
进行交互。我们学习了COM接口的概念、优势与限制,了解了
Excel
的对象模型,包括应用程序对象、工作簿、工作表和单元格对象。
V
C++
数据
写入
EXCEL
文档
想要通过ODBC直接读、写
Excel
表格文件,首先,应确保ODBC中已安装有
Excel
表格文件的驱动"MICROSOFT
EXCEL
DRIVER (*.XLS)"。然后,可根据下面步骤进行: 1. 在StdAfx.h文件中加入: include include 2. 通过ODBC直接创建
Excel
文件(暂定文件名:Demo.xls) //创建并写入
Excel
文件 void
V
C++
中
实现
数据
保存到
Excel
的详细教程
htmltable {th, td {th {pre {简介:在V
C++
开发环境中,通过使用Microsoft Office的自动化接口和COM技术,可以
实现
将
数据
保存到
Excel
文件中。这包括创建
Excel
实例、操作工作簿和工作表、写入
数据
、保存和关闭操作以及异常处理等步骤。此外,为了性能优化,还可以考虑使用Open XML SDK或第三方库如libxl、Apache POI等技术。
VC.NET
7,539
社区成员
27,670
社区内容
发帖
与我相关
我的任务
VC.NET
.NET技术 VC.NET
复制链接
扫一扫
分享
社区描述
.NET技术 VC.NET
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章