软件:vs2013

程序功能:将ListControl内容导出到Excel里

步骤:

第一步:创建基于对话框的MFC工程

第二步:添加库、添加Excel类库

在工程名上右键,选择“添加”—“类”(或者点击菜单栏的“项目”->“添加类”),选择“TypeLib中的MFC类”(MFC Class From TypeLib)

类来源选“注册表”,在可用的类型库中选择“Microsoft Excel 12.0 Object Library<1.6>”在接口列表框中选择需要的类,在此,我们选择_Application,_Workbook,Worksheet,Range,Workbooks,Worksheets这六个就可以了。

但是有的接口里没东西,例如:

怎么办呢?不急。可以选“文件”,找到EXCEL.EXE的位置,来进行添加:(我的位置在:D:\office\Office14\EXCEL.EXE)

第三步:修改头文件

分别将加进来的六个头文件上面的“#import "C:\\Program Files\\Microsoft Office\\OFFICE11\\EXCEL.EXE" no_namespace”注释掉。

第四步:编译,修改错误

编译,会出现两个错误:

…\crange.h(335): warning C4003: “DialogBoxW”宏的实参不足

…\crange.h(335): error C2059: 语法错误:“,”

双击错误提示,定位在错误行,

VARIANT DialogBox()

{

VARIANT result;

InvokeHelper(0xf5, DISPATCH_METHOD, VT_VARIANT, (void*)&result, NULL);

return result;

}

将该函数名“DialogBox()”前面加“_”下划线,即“_DialogBox()”,这样就可以编译成功了。

第五步:删除对话框内容,添加对应控件

1.在对话框中添加列表控件,关联变量m_Grid,并设置显示为报表样式:

打开工具箱选择List Control(列表控件),移到合适位置后,更改属性,鼠标右击选择“属性”,View-->Report,Border-->True

添加变量:类别Control,变量名m_Grid

2.在对话框中添加“导出”按钮

第六步:代码(可以直接将代码复制运行下)

添加头文件

#include "CWorkbook.h"                //管理单个工作表
#include "CWorkbooks.h"         //统管所有的工作簿
#include "CApplication.h"          //Excel应用程序类,管理我们打开的这整个Excel应用
#include "CRange.h"               //区域类,对EXcel的大部分操作都要和这个打招呼
#include "CWorksheet.h"            //工作薄中的单个工作表
#include "CWorksheets.h"            //统管当前工作簿中的所有工作表

在初始化函数中,先初始化列表(C导出到ExcleDlg::OnInitDialog)红框里为添加的代码位置

//设置列表视图的扩展风格m_Grid.SetExtendedStyle(LVS_EX_FLATSB            //扁平风格显示滚动| LVS_EX_FULLROWSELECT                       //允许整行选中| LVS_EX_HEADERDRAGDROP               //允许整列拖动| LVS_EX_ONECLICKACTIVATE                //单击选中项| LVS_EX_GRIDLINES                  //画出网格线);//设置表头m_Grid.InsertColumn(0, _T("编号"), LVCFMT_LEFT, 80, 0);m_Grid.InsertColumn(1, _T("姓名"), LVCFMT_LEFT, 80, 1);m_Grid.InsertColumn(2, _T("所属部门"), LVCFMT_LEFT, 80, 2);//向列表中插入数据int count = 0;m_Grid.InsertItem(count, _T("001"));//行m_Grid.SetItemText(count, 1, _T("张一"));m_Grid.SetItemText(count++, 2, _T("销售部"));m_Grid.InsertItem(count, _T("002"));m_Grid.SetItemText(count, 1, _T("张二"));m_Grid.SetItemText(count++, 2, _T("研发部"));m_Grid.InsertItem(count, _T("003"));m_Grid.SetItemText(count, 1, _T("张三"));m_Grid.SetItemText(count++, 2, _T("采购部"));m_Grid.InsertItem(count, _T("004"));m_Grid.SetItemText(count, 1, _T("张四"));m_Grid.SetItemText(count, 2, _T("宣传部"));

编写按钮的响应函数:

 CString strFile = _T("E:\\Test.xls");COleVariantcovTrue((short)TRUE),covFalse((short)FALSE),covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR);CApplication app;CWorkbooks books;CWorkbook book;CWorksheets sheets;CWorksheet sheet;CRange range;CFont font;if (!app.CreateDispatch(_T("Excel.Application"))){MessageBox(_T("创建失败!"));return;}books = app.get_Workbooks();book = books.Add(covOptional);sheets = book.get_Worksheets();             //得到bookssheet = sheets.get_Item(COleVariant((short)1));//得到全部Cellsrange.AttachDispatch(sheet.get_Cells());CString sText[] = { _T("编号"), _T("姓名"), _T("所属部门") };for (int setnum = 0; setnum < m_Grid.GetItemCount() + 1; setnum++)   //GetItemCount()列表的里面的条目数量, 横着的  行{for (int num = 0; num < 3; num++){if (!setnum){range.put_Item(_variant_t((long)(setnum + 1)), variant_t((long)(num + 1)),_variant_t(sText[num]));}else{range.put_Item(_variant_t((long)(setnum + 1)), _variant_t((long)(num + 1)),_variant_t(m_Grid.GetItemText(setnum - 1, num)));//GetItemText()获取第setnum-1行,num列的文本}}}//保存book.SaveCopyAs(COleVariant(strFile));  //SaveCopyAs在strFile路径下保存为指定格式.xlsx的文件book.put_Saved(true);   //将Workbook的保存状态设置为已保存,即不让系统提示是否人工保存app.put_Visible(true);        //设置表可见性//释放对象range.ReleaseDispatch();sheet.ReleaseDispatch();sheets.ReleaseDispatch();book.ReleaseDispatch();books.ReleaseDispatch();app.ReleaseDispatch();app.Quit();

最终结果如下:

按下导出按钮后

MFC导出到Excel相关推荐

  1. 使用MFC自动化操作Excel文档

    使用MFC自动化操作Excel文档 项目中要用到MFC操作Excel文件,在网上搜的结果,有把Excel当数据库处理的,也有直接操作Excel的,最终在MSDN上看到的结果,测试后觉得好用些. 使用基 ...

  2. java导出为excel文件_java导出数据到excel文件

    有的时候,将一些有用的数据导出到excel是很有必要的.比如说,我现在在做一个学校的在线教学平台,有一个需求是:将学生成绩导出到excel文件中去. 那怎样实现用java导出数据到excel文件呢?? ...

  3. ftl模板导出excel_freemarker导出复杂Excel

    原文: freemarker导出复杂Excel date: 2017-04-20 12:39:04 [TOC] 序言 用Freemarker做Excel导出确实很容易. 但是导出复杂Excel, 例如 ...

  4. Gridview导出到Excel,Gridview中的各类控件,Gridview中删除记录的处理

    Asp.net 2.0中新增的gridview控件,是十分强大的数据展示控件,在前面的系列文章里,分别展示了其中很多的基本用法和技巧(详见< ASP.NET 2.0中Gridview控件高级技巧 ...

  5. 将数据库查询结果导出成Excel表格

    使用Java代码,从数据库中获取结果集,将结果集导出成Excel表格形式. 从数据库中查询学生表所有数据,将其导出成Excel表格,点击查看学生表表结构 . package com.test.test ...

  6. 百度指数常见php框架,怎么导出数据到excel表格-如何将百度指数数据导出到Excel表格...

    如何将百度指数数据导出到Excel表格 第一步:打开CAD.CAD命令行输入"Li"."选择对象"选需要提取坐标的多段线.回车. 第二步:将CAD文本框中的数据 ...

  7. mysql excel 命令行_MySQL 命令行数据导出到 Excel

    显示行号 | 选择喜欢的代码风格 默认 GitHub Dune LakeSide Plateau Vibrant Blue Eighties Tranquil 将 MySQL 的数据导出 Excel, ...

  8. R语言将多个dataframe导出到excel的多个表单(sheet)实战

    R语言将多个dataframe导出到excel的多个表单(sheet)实战 目录 R语言将多个dataframe导出到excel的多个表单(sheet)实战

  9. R语言使用broom包将回归模型(线性回归、逻辑回归、比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集

    R语言使用broom包将回归模型(线性回归.逻辑回归.比例风险回归)的结果整理成dataframe并导出到excel等文件中:基于mtcars和colon数据集 目录

最新文章

  1. php 变更 obj,PHP: 不向后兼容的变更 - Manual
  2. 计算机论文数据建模怎么写,如何撰写建模论文?
  3. navigationBar 颜色修改
  4. php dirname(__FILE__)
  5. [leetcode] Bulb Switcher
  6. 关联规则算法php,科学网—加权关联规则权值的计算 - 叶文菁的博文
  7. GELU的两个初等函数近似是怎么来的?
  8. JDBC连接数据库及其执行操作
  9. java简单词法分析器(源码下载)
  10. Spark连接hive
  11. 一个想法:利用VHD部署系统
  12. 【Java程序设计】类与对象的基本概念(上)
  13. python爬虫学习之XPath基本语法
  14. Sigmoid函数求导
  15. 阿里巴巴是怎么处理大数据的?重磅揭秘!
  16. Java虚拟机之堆空间
  17. Spring中的接口驱动控制器
  18. MUI-grid(栅格),超小屏xs和小屏幕sm
  19. untiy TextMeshPro(简称TMP)组件详细内容
  20. 学习opencv:PS滤镜—浮雕

热门文章

  1. 服务器如何做好数据备份
  2. Java--IO流详解
  3. linux配置指定ip访问指定端口号,操作系统linux和dos linux下通过iptables只允许指定ip地址访问指定端...
  4. Python 爬虫进阶必备 | 某音乐网站查询参数加密逻辑分析(分离式 webpack 的加密代码扣取详解)...
  5. 国际期货黄金手续费怎么算?
  6. 安装BENQSCANNER 5560驱动与测试扫描
  7. Linux 使用Benq 4300U扫描仪
  8. 移动设备视频制作(转)
  9. Android Java小知识点集锦
  10. 电脑定时关机怎么设置?win10怎么设置定时关机