本文介绍MFC中如何根据word模版生成我们所需要的word文档。

开发环境:Win7+VS2015+word2016

操作步骤:

创建一个MFC工程,过程略

导入word类库

[Project] -> [Class Wizard...] -> [Add Class...]::[MFC Class from Typelib...];

选择Add class from:[File],从Office的安装目录中找到MSWORD.OLB;

从Interfaces:中选择所需要的类。这里我们选择了如下几个:

_Application、 _Document、 Bookmarks、 Bookmarks、 Cell、 Cells Column、 Columns、 Documents、 Range、 Row、 Rows、 Selection、 Table、 Tables;

我们在点击[finish]之前,最好修改一下生成文件的路径,比如建一个msword的文件夹,把生成的文件都放到该文件夹下。

TypelibWizard.png

将生成的头文件中的导入MSWORD.OLB的代码注释掉

//#import "C:\\Program Files\\Microsoft Office\\root\\Office16\\MSWORD.OLB" no_namespace

引入生成的头文件

#include "msword/CApplication.h" //word程序对象

#include "msword/CDocuments.h" //文档集对象

#include "msword/CDocument0.h" //docx对象

#include "msword/CSelection.h" //所选内容

#include "msword/CCell.h" //单个单元格

#include "msword/CCells.h" //单元格集合

#include "msword/CRange.h" //文档中的一个连续范围

#include "msword/CTable0.h" //单个表格

#include "msword/CTables0.h" //表格集合

#include "msword/CRow.h" //单个行

#include "msword/CRows.h" //行集合

#include "msword/CBookmark0.h" //

#include "msword/CBookmarks.h" //

初始化com

找到我们的MFC项目中的XXXApp::InitInstance(),在这个初始化方法中添加以下代码:

SetRegistryKey(_T("Local AppWizard-Generated Applications"));

if (!AfxOleInit())

{

AfxMessageBox(_T("无法初始化COM的动态链接库!"));

return FALSE;

}

好了,现在我们的准备工作基本上就完成了,可以使用word的的操作类了。前文中讲了,我们要根据word模版以及书签功能产生我们所需要的word文档,所以现在我们先创建一个word模版文件。

创建一个word模版文件

创建一个word文档,先把所需要的模版定义好,然后在需要改动的位置插入书签,另存为.dot文件,我把这个文件另存为到C:/template.dot。

template.png

现在可以写代码利用这个模版成圣我们需要的word文档了。

生成所需word文档

在MFC项目中我添加了一个[生成]按钮,在这个按钮的点击事件中加入以下代码:

mfc_test.png

COleVariant covZero((short)0),

covTrue((short)TRUE),

covFalse((short)FALSE),

covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR),

covDocxType((short)0),

start_line, end_line,

dot(_T("c:\\Template.dot"));

CApplication wordApp;

CDocuments docs;

CDocument0 docx;

CBookmarks bookmarks;

CBookmark0 bookmark;

CRange range;

CCell cell;

if (!wordApp.CreateDispatch(_T("Word.Application")))

{

AfxMessageBox(_T("本机没有安装word产品!"));

return;

}

wordApp.put_Visible(FALSE);

CString wordVersion = wordApp.get_Version();

docs = wordApp.get_Documents();

docx = docs.Add(dot, covOptional, covOptional, covOptional);

bookmarks = docx.get_Bookmarks();

bookmark = bookmarks.Item(&_variant_t(_T("标题1")));

range = bookmark.get_Range();

range.put_Text(_T("这是标题1"));

bookmark = bookmarks.Item(&_variant_t(_T("标题2")));

range = bookmark.get_Range();

range.put_Text(_T("这是标题2"));

bookmark = bookmarks.Item(&_variant_t(_T("序号1")));

range = bookmark.get_Range();

range.put_Text(_T("1"));

bookmark = bookmarks.Item(&_variant_t(_T("姓名1")));

range = bookmark.get_Range();

range.put_Text(_T("王二小"));

bookmark = bookmarks.Item(&_variant_t(_T("年龄1")));

range = bookmark.get_Range();

range.put_Text(_T("10"));

CString strSavePath = _T("C:");

strSavePath += _T("\\test.docx");

docx.SaveAs(COleVariant(strSavePath), covOptional, covOptional, covOptional, covOptional,

covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional, covOptional);

// 退出word应用

docx.Close(covFalse, covOptional, covOptional);

wordApp.Quit(covOptional, covOptional, covOptional);

range.ReleaseDispatch();

bookmarks.ReleaseDispatch();

wordApp.ReleaseDispatch();

AfxMessageBox(_T("test.docx生成成功!"));

运行结果

点击[生成]按钮,稍等片刻后会弹出生成成功提示信息:

create_ok.png

打开C盘,会发现一个新创建的word文档test.docx,打开看一下里面的内容吧!

test_docx.png

小结:

本文简要介绍了使用书签的方法生成我们所需要的word文档,在整个过程中有几点需要注意:

在导入类的时候最好新建一个文件夹,否则你的工程目录会被所生成的文件所占据;

在包含我们所需要的头文件时,注意将前面导入MSWORD.OLB的语句屏蔽掉,否则会编译错误;

别忘了初始化com组件;

如果你不是用的MFC工程而是控制台程序可以用CoInitialize(NULL)来替代AfxOleInit(),在程序退出时调用CoUninitialize();来反初始化。

操作完office后别忘记释放资源。

除了使用模版书签操作word还可以直接用代码来生成我们所需要的word文档,大家可以试验一下,本文不在赘述。

关于代码:

本文代码已经同步到Github上。

全文完

mfc切换office样式_VS2015下使用MFC操作Office(Word)相关推荐

  1. linux 字符界面 office,Linux系统下对比永中office和wps的界面及字体,附对比图

    本文为你介绍Linux系统下对比永中office和wps的界面及字体,附对比图和用户评论.仅是对这两个应用软件直观的界面进行比较,没有没有涉及到功能齐不齐全.兼容性是否良好等问题.如果你使用的是Dee ...

  2. mfc切换office样式_干货搬运工|计算机二级office必读,裸考也能通关的宝典

    计算机二级office就要考试啦,裸考的同学们注意啦!紧急紧急!!我们都有自己的理想,希望自己在别人面前能站得住脚,希望自己才华横溢.点进来的伙伴们,相信都是即将要上计算机二级考场或者是准备下一次的二 ...

  3. 【MFC】Windows样式

    00. 目录 文章目录 00. 目录 01. 概述 02. Windows常用样式 03. Windows样式示例 04. Windows位置 05. Windows大小 06. Windows尺寸 ...

  4. 【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用

    本文是基于对话框的 博文基于 无幻 的博文为基础写的 http://blog.csdn.net/akof1314/article/details/4951836 笔者使用mfc撑死2个星期,不过这是有 ...

  5. 如何在不安装Microsoft Office的情况下用C#创建Excel(.XLS和.XLSX)文件?

    如何在不使用运行代码的计算机上安装Excel的情况下使用C#创建Excel电子表格? #1楼 我成功地使用了以下开源项目: OOXML格式的ExcelPackage(Office 2007) .XLS ...

  6. MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC

    前言 我们在使用Microsoft Visual Studio软件(也就是我们常常说的VS)时,其中项目属性中有一项叫做"MFC的使用",里面包含有不同的设置,会影响我们所编写的程 ...

  7. VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)

    原文:http://www.jizhuomi.com/software/141.html 解决方案与工程 鸡啄米在VS2010的使用介绍中已经讲了解决方案与工程的概念,这里再重提一下.每个应用程序都作 ...

  8. 小程序 自定义tabbar + 自定义tabbar样式 + tabbar切换激活样式问题

    我用的是 Vant Weapp  UI组件库, 需要用store 全局共享数据 解决tabbar切换激活样式问题 关于如何使用 Mobx,创建store可参考:微信小程序 Mobx实现数据共享(创建s ...

  9. jQuery 效果——显示隐藏/滑动/淡入淡出/自定义动画||事件切换——简洁版滑动下拉菜单

    jQuery 效果 显示隐藏效果 <!DOCTYPE html> <html lang="en"><head><meta charset= ...

  10. 2.修改/etc/hosts文件 /安装SSH、配置SSH无密码登陆(全程切换到hadoop用户下操作)

    修改/etc/hosts文件 sudo gedit /etc/hosts127.0.0.1 localhost 192.168.222.129 master 下面分别对应三个机器的IP地址,用ifco ...

最新文章

  1. BFS:走出迷宫并输出最小步数
  2. 隐藏和伪装端口banner
  3. OpenCode:template
  4. List-存储原理(quicklist)
  5. 一步一步学pwntools(适合新手)
  6. jstack命令分析
  7. 硬核 App,这项新功能一定要打开,关键时刻能救命!!
  8. dwz怎么使用数据加载中提示_SOLIDWORKS在使用中提示内存不足怎么办?
  9. Latex 中文配置解析
  10. tensorflow中squeeze与expand_dims
  11. 一文读懂背照式CMOS图像传感器
  12. 块存储、文件存储、对象存储及内容分发CDN
  13. 月份30或31c语言编程,C语言程序设计上机编程方法.PPT
  14. 在群晖NAS上搭建 Git Server
  15. Google Play如何做ASO优化?影响搜索排名的主要因素.
  16. 未使用的运算放大器如何处理?
  17. 如何提取视频的m3u8地址
  18. 全球及中国数字身份解决方案行业研究及十四五规划分析报告
  19. WebSocket 协议详述( java在线聊天室_上篇)
  20. 如何让不精通电脑的你用很少的价钱大幅度提高你的电脑速度?(手把手装固态+装系统教程,适用于电脑有光驱位且没有装固态的童鞋,文末有自己安装过程中经验QA)

热门文章

  1. 5月6阴阳师服务器维护,阴阳师正式服5月6日更新公告
  2. 原来 Elasticsearch 还可以这么理解
  3. e100网卡收包流程分析
  4. 不支持:http://javax.xml.XMLConstants/property/accessExternalStylesheet
  5. kubernetes 部署
  6. windows 用choco 安装nvm
  7. 漫画英语作文怎么写 计算机,漫画英文作文怎么写
  8. 一个超级实用的单片机调试技巧!DWT组件
  9. arduino tft 方向_Arduino2.4英寸TFT显示屏的演示
  10. 40 岁的时候,我转行成为一名前端开发者!