mfc切换office样式_VS2015下使用MFC操作Office(Word)
本文介绍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)相关推荐
- linux 字符界面 office,Linux系统下对比永中office和wps的界面及字体,附对比图
本文为你介绍Linux系统下对比永中office和wps的界面及字体,附对比图和用户评论.仅是对这两个应用软件直观的界面进行比较,没有没有涉及到功能齐不齐全.兼容性是否良好等问题.如果你使用的是Dee ...
- mfc切换office样式_干货搬运工|计算机二级office必读,裸考也能通关的宝典
计算机二级office就要考试啦,裸考的同学们注意啦!紧急紧急!!我们都有自己的理想,希望自己在别人面前能站得住脚,希望自己才华横溢.点进来的伙伴们,相信都是即将要上计算机二级考场或者是准备下一次的二 ...
- 【MFC】Windows样式
00. 目录 文章目录 00. 目录 01. 概述 02. Windows常用样式 03. Windows样式示例 04. Windows位置 05. Windows大小 06. Windows尺寸 ...
- 【MFC】vs2013_MFC使用文件之15.mfc 按钮CBitmapButton的使用
本文是基于对话框的 博文基于 无幻 的博文为基础写的 http://blog.csdn.net/akof1314/article/details/4951836 笔者使用mfc撑死2个星期,不过这是有 ...
- 如何在不安装Microsoft Office的情况下用C#创建Excel(.XLS和.XLSX)文件?
如何在不使用运行代码的计算机上安装Excel的情况下使用C#创建Excel电子表格? #1楼 我成功地使用了以下开源项目: OOXML格式的ExcelPackage(Office 2007) .XLS ...
- MFC的使用——在共享DLL中使用MFC、在静态库中使用MFC
前言 我们在使用Microsoft Visual Studio软件(也就是我们常常说的VS)时,其中项目属性中有一项叫做"MFC的使用",里面包含有不同的设置,会影响我们所编写的程 ...
- VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
原文:http://www.jizhuomi.com/software/141.html 解决方案与工程 鸡啄米在VS2010的使用介绍中已经讲了解决方案与工程的概念,这里再重提一下.每个应用程序都作 ...
- 小程序 自定义tabbar + 自定义tabbar样式 + tabbar切换激活样式问题
我用的是 Vant Weapp UI组件库, 需要用store 全局共享数据 解决tabbar切换激活样式问题 关于如何使用 Mobx,创建store可参考:微信小程序 Mobx实现数据共享(创建s ...
- jQuery 效果——显示隐藏/滑动/淡入淡出/自定义动画||事件切换——简洁版滑动下拉菜单
jQuery 效果 显示隐藏效果 <!DOCTYPE html> <html lang="en"><head><meta charset= ...
- 2.修改/etc/hosts文件 /安装SSH、配置SSH无密码登陆(全程切换到hadoop用户下操作)
修改/etc/hosts文件 sudo gedit /etc/hosts127.0.0.1 localhost 192.168.222.129 master 下面分别对应三个机器的IP地址,用ifco ...
最新文章
- BFS:走出迷宫并输出最小步数
- 隐藏和伪装端口banner
- OpenCode:template
- List-存储原理(quicklist)
- 一步一步学pwntools(适合新手)
- jstack命令分析
- 硬核 App,这项新功能一定要打开,关键时刻能救命!!
- dwz怎么使用数据加载中提示_SOLIDWORKS在使用中提示内存不足怎么办?
- Latex 中文配置解析
- tensorflow中squeeze与expand_dims
- 一文读懂背照式CMOS图像传感器
- 块存储、文件存储、对象存储及内容分发CDN
- 月份30或31c语言编程,C语言程序设计上机编程方法.PPT
- 在群晖NAS上搭建 Git Server
- Google Play如何做ASO优化?影响搜索排名的主要因素.
- 未使用的运算放大器如何处理?
- 如何提取视频的m3u8地址
- 全球及中国数字身份解决方案行业研究及十四五规划分析报告
- WebSocket 协议详述( java在线聊天室_上篇)
- 如何让不精通电脑的你用很少的价钱大幅度提高你的电脑速度?(手把手装固态+装系统教程,适用于电脑有光驱位且没有装固态的童鞋,文末有自己安装过程中经验QA)
热门文章
- 5月6阴阳师服务器维护,阴阳师正式服5月6日更新公告
- 原来 Elasticsearch 还可以这么理解
- e100网卡收包流程分析
- 不支持:http://javax.xml.XMLConstants/property/accessExternalStylesheet
- kubernetes 部署
- windows 用choco 安装nvm
- 漫画英语作文怎么写 计算机,漫画英文作文怎么写
- 一个超级实用的单片机调试技巧!DWT组件
- arduino tft 方向_Arduino2.4英寸TFT显示屏的演示
- 40 岁的时候,我转行成为一名前端开发者!