欢迎来到天天文库
浏览记录
ID:34762641
大小:94.18 KB
页数:6页
时间:2019-03-10
《导出clistctrl控件到excel文件》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、导出CListCtrl控件到Excel文件CListCtrl获得列的属性可以使用BOOLCListCtrl::GetColumn(intnCol,LVCOLUMN*pColumn),nCol为需要获得获得属性值的列序号,pColumn为LVCOLUMN结构体的指针。LVCOLUMN结构体中的UINTmask作为输入,决定返回哪些属性的值,如果mask的值包含LVCF_TEXT,则需要将字符串缓存的首地址指针置入结构体中的LPTSTRpszText;变量,缓存大小置入intcchTextMax;变量。 使用这个函数的主要问题是主要问题期望返回L
2、VCF_TEXT,设置了pszText却没有设置cchTextMax变量,并且通常都在分配LVCOLUMN结构体空间时将所分配的内存清0,因此总是不能返回列名。反而是没有清0所分配空间,直接设置mask为LVCF_TEXT,那么可能可以获得列名的值。当然只要正确设置pszText和cchTextMax就不会有这些问题。 还有一个问题是列的数量。没有直接的函数可以获得列的数量,只能从0开始不断自增nCol的值,判断GetColumn(nCol,pColumn)的返回值是否为False以计算列的数量。一封装好的导出CListCtrl数据函数如下:
3、///////////////////////////////////////////////////////////////////////////////// voidGetExcelDriver(CListCtrl*pList,CStringstrTitle)// 参数:// pList 需要导出的List控件指针// strTitle 导出的数据表标题// 说明:// 导出CListCtrl控件的全部数据到Excel文件。
4、Excel文件名由用户通过“另存为”// 对话框输入指定。创建名为strTitle的工作表,将List控件内的所有数据(包括// 列名和数据项)以文本的形式保存到Excel工作表中。保持行列关系。// // editby[r]@dotlive.cnblogs.com /////////////////////////////////////////////////////////////////////////////// voidExportListToExcel(CListCtrl
5、*pList,CStringstrTitle) { CStringwarningStr; if(pList->GetItemCount()>0){ CDatabasedatabase; CStringsDriver; CStringsExcelFile; CStringsSql; CStringtableName=strTitle; //检索是否安装有E
6、xcel驱动"MicrosoftExcelDriver(*.xls)" sDriver=GetExcelDriver(); if(sDriver.IsEmpty()) { //没有发现Excel驱动 AfxMessageBox("没有安装Excel!请先安装Excel软件才能使用导出功能!"); return; }
7、 ///默认文件名 if(!GetDefaultXlsFileName(sExcelFile)) return; //创建进行存取的字符串 sSql.Format("DRIVER={%s};DSN='''';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB="%s";DBQ=%s",sDriver,
8、 sExcelFile,sExcelFile); //创建数据库(既Excel表格文件)
此文档下载收益归作者所有