MFC中操作Word文档

2023-11-19

        首先我们需要导入word类库(电脑上需要安装了word),左击项目,点击类向导,添加类(C)选择类型库中的MFC类。本文章案例可点击下载。

         然后选择文件,位置选择从office安装目录中找到MSWORD.OLB文件,然后点击>>添加所有类。

         添加完成后,点击完成。

         可以发现word库已经被添加进来了,如下图:

         然后导入如下头文件,并且注释掉以下头文件(.h文件)的里面import导入的内容:

#include "CApplication0.h"   
#include "CDocuments0.h"    
#include "CDocument1.h"    
#include "CSelection0.h"     
#include "CRange0.h"      
#include "CBookmark1.h"    
#include "CBookmarks0.h" 
#include "CnlineShape.h" 
#include "CnlineShapes.h" 
需要注释的代码段

         然后,自己新建一个模板文档(.dot,或者随便新建一个word然后另存为dot,如下下图),在对应位置插入书签,因为这个是后面程序插入数据通过书签确定插入位置。

         最后提供一个简单插入数据的代码示例:

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:\\Users\\Admin\\Desktop\\tmp.dot"));

	CApplication0 wordApp;
	CDocuments0 docs;
	CDocument1 docx;
	CBookmarks0 bookmarks;
	CBookmark1 bookmark;
	CRange0 range;
	CnlineShapes pInShapes;

	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();

	CSelection0 sel = wordApp.get_Selection();//获取文档的selection
	pInShapes = sel.get_InlineShapes();

	//获取系统时间
	CString currentTime = CTime::GetCurrentTime().Format("%Y%m%d");

	//通过书签写入数据到word模板中
	bookmark = bookmarks.Item(&_variant_t(_T("title")));
	range = bookmark.get_Range();
	range.put_Text(currentTime);
	bookmark = bookmarks.Item(&_variant_t(_T("data1")));
	range = bookmark.get_Range();
	range.put_Text(_T("aaaaa"));
	bookmark = bookmarks.Item(&_variant_t(_T("data2")));
	range = bookmark.get_Range();
	range.put_Text(_T("bbbbb"));
	bookmark = bookmarks.Item(&_variant_t(_T("data3")));
	range = bookmark.get_Range();
	range.put_Text(_T("ccccc"));

	CString strSavePath = _T("C:\\Users\\Admin\\Desktop\\");
	strSavePath += (CString("word") + currentTime + CString(".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);
	pInShapes.ReleaseDispatch();
	sel.ReleaseDispatch();
	range.ReleaseDispatch();
	bookmarks.ReleaseDispatch();
	wordApp.ReleaseDispatch();
	AfxMessageBox(strSavePath + "生成成功!");

        运行后生成word,打开内容如下:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MFC中操作Word文档 的相关文章

  • VBA写入Word,更改字体格式

    我正在 Excel 中编写 VBA 脚本 以将基于某些表格的文本输出到 Word 文档 在大多数情况下 一切都很顺利 我在 stackoverflow 的帮助下自学 我有一个相当长的代码 因此将其全部复制到这里会很困难 我将尝试展示相关部分
  • C++ 检查 unicode 字符是否为全角

    如何检查unicode字符是否是全角 我使用Win32 MFC 例如 中是全宽 A不是全角 是全宽 F不是全宽 你需要的是检索东亚宽度 http www unicode org reports tr11 的角色 您可以通过解析来做到这一点东
  • 将表行从 Word 文档复制到现有文档表特定单元格

    我正在寻找一个宏 它将内容从一个 Word 文档中的表格复制到另一个现有 Word 文档中的表格到特定单元格中 从第 5 行开始 复制后面的所有行并将其粘贴到现有文档中的第 5 行 这可能吗 在此输入图像描述 https i stack i
  • 在 MS Word 中运行外部 vba 代码

    我可以将外部代码链接到 Word 文档吗 我有很多带有宏的 Word 文档 VBA 代码 全部使用相同的代码 我希望代码从外部源运行 而不是从所有这些文档中运行 这样 如果我必须更新代码 我只有一个地方需要更新 您可以创建一个模板并将其放入
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 为什么我的单选按钮不起作用?

    我正在 Visual C 2005 中开发 MFC 对话框应用程序 我的单选按钮是 m Small m Medium 和 m Large 它们都没有在我的 m Summary 编辑框中显示应有的内容 可能出什么问题了 这是我的代码 Pizz
  • MFC CList 支持复制分配吗?

    我在 MSVC 中查找了 CList 定义afxtempl h http www cppdoc com example mfc classdoc MFC AFXTEMPL H html并记录在MSDN http msdn microsoft
  • Windows API 中逻辑坐标和设备坐标之间的混淆

    我一直在研究一个使用两个函数的 Visual Studio C Windows 应用程序项目SetWindowExt and SetViewportExt 我对这两个函数的作用以及为什么它们是必要的感到困惑 搜索这些函数 我得出了逻辑坐标和
  • 将jsp表导出到excel、word、pdf

    任何人都可以建议我任何库 jar 文件 我可以使用它们将我的表导出到 excel pdf word 请告诉我是否有任何可以在 jsp 中创建报告的库 还应该提到的是 您只需输出 HTML 表格并将响应类型设置为即可将表格导出到 Excela
  • 如何使用 Microsoft.Office.Interop.Word 将光标移动到特定段落?

    我们正在开发C Net 4 0基于 Windows 窗体的应用程序使用Microsoft Office Interop Word参考 现在我想将光标的位置移动到特定段落 我怎么做呢 void MoveToParagraph Microsof
  • MFC:如何设置CEdit框的焦点?

    我正在开发我的第一个简单的 MFC 项目 但我正在努力解决一个问题 想要设置所有的焦点CEdit其中一个对话框中的框 我的想法是 当打开对话框时 焦点位于第一个编辑框上 然后使用 选项卡 在它们之间交换 我看到了方法SetFocus 但我无
  • 如何通过C#通过OpenXML从Word(.Docx)中提取OLE文件

    我想用Openxml抽象 OLE package 从一个 docx 文件 我不知道该怎么做 并且在官方示例中没有找到任何相关示例 请帮我 这是我的尝试 我通过 MS Office 2016 构建了一个 Docx 文件 名为 Test doc
  • 在运行时将无模式对话框转换为模式对话框

    我有一个对话框 CDialog 派生类 可以以两种不同的方式使用 编辑模式和编程模式 当对话框打开以在编程模式下使用时 它是一个无模式对话框 用于修改主视图 类似于工具栏 当它以编辑模式打开时 用户可以更改对话框本身的配置 在这种情况下 它
  • 使用 OpenXML 在 Word 中插入换行符

    我正在使用 openxml WordProcessingDocument 打开 Word 模板并将占位符 x1 替换为字符串 除非我需要字符串包含换行符 否则这工作正常 如何将 x1 替换为可能包含 word 可以识别的换行符的文本 我已经
  • 将文档属性字段添加到页脚会删除现有的页码

    我想在文档中每个页面的页脚中标记一个文档变量字段 我已经弄清楚如何添加该字段 但是 这样做时 页脚中已存在的页码字段将被禁用 仅保留文本并且不再充当动态页码 这是我的代码 它添加了该字段 但以某种方式禁用了页码 sectionFooter
  • Visual C++ MFC 中窗口启动时的事件顺序

    假设我有一个从 CWnd 派生的类 它具有事件处理函数OnPaint OnCreate and OnSize 如您所知 所有这些都是在窗口启动时发生的 但我想看看它们之间的顺序是什么 例如 当我在其中一个中设置断点时 在结束函数后 控制不会
  • Office.js:插入行后表中的 ContentControl 损坏

    I m using Microsoft Word for Microsoft 365 MSO Version 2307 Build 16 0 16626 20170 64 bit which means that Word API is v
  • 如何将tchar指针转换为char指针

    我想将 tchar 转换为 char 这可能吗 如果是的话该怎么做 我使用unicode设置 A TCHAR要么是一个普通的char or a wchar t取决于您的项目的设置 如果是后者 您需要使用WideCharToMultiByte
  • MFC 中标题栏上的关闭按钮

    在基于 Vc 6 0 对话框的 MFC 应用程序中 我不希望我的用户通过按窗口本身右上角的按钮 X 以及 Alt F4 来关闭窗口 我想显示一个消息框 你真的想关闭应用程序吗 如果用户单击 确定 按钮 则应用程序必须关闭 否则 如果用户单击
  • 混合 MFC 和 WPF:模态对话框

    我使用 C CLI 界面层将 C WPF 对话框添加到现有的 C MFC 应用程序 我一切正常 只是我遇到了形式问题 例如 MFC 应用程序使用 ShowDialog 显示 WPF 对话框 按预期工作 该 WPF 对话框显示使用 DoMod

随机推荐

  • Java字符串转换成字符数组

    方法1 package com oracle import java util Scanner public class Test param args public static void main String args TODO Au
  • VMWARE 占用硬盘空间越来越大的解决方法

    1 问题现象 为了开发android驱动 我使用vmware虚拟机运行UBUNTU12 04 硬盘分区有150G 分配了130g给虚拟机 还剩下不到20G的空间作为预留 本来想着130G的空间应该足够跑ubuntu的 但当我编译过几次and
  • 3D游戏编程——与游戏世界交互

    HW5 1 编写一个简单的鼠标打飞碟 Hit UFO 游戏 游戏内容要求 游戏有 n 个 round 每个 round 都包括10 次 trial 每个 trial 的飞碟的色彩 大小 发射位置 速度 角度 同时出现的个数都可能不同 它们由
  • 【LLM】如何将开源基础模型训练成特定领域的LLM?

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • xxxxxxxxxxxxxx

    zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz
  • python生成10个随机数并排序_生成一个随机数的列表,然后对它们进行排序

    首先 我想向您展示完整的代码 稍后我将发表评论 import random def randomNum return random sample range 1 100 5 numbers list randomNum print numb
  • BUUCTF LOVESQL

    打开网页后 利用hackbar 先来查询他的列数 1 order by 3 试了1 2 3 4都不行 初步判断 是被后端代码过滤掉了 我们试试 和 的效果是一样的 但是当我尝试使用 后发现仍然没有反应 说明后端代码也过滤掉了 我们采用另外一
  • 二进制在数学中的妙用

    二进制在数学中的妙用 goal00001111搜集整理 十 八世纪初 莱布尼茨发明了二进制数 当时的他肯定没有预料到二进制在信息时代会有着如此广泛的应用 二进制数以其工作可靠 运算简单 逻辑严密 容易实现 等特点 成为了计算机的专用语言 在
  • linux下安装中文输入法及vim支持中文的方法

    最近折腾Ubuntu 之前一直是用英文显示系统 输入法也是Ubuntu14默认的拼音 一开始也没觉得不好 可是在vim编辑文档时 需要添加注释 这就显得十分不方便 所以花点时间来解决这个问题 一开始是想找vim如何支持中文的方法 网络上的各
  • Springboot Maven显示缺少org.junit.jupiter.api

    原因 spring boot 2 2 之前使用的是 Junit4 而后续的使用的是Junit5 导致缺少包 解决方法 导入包
  • C语言-多选题

    C语言多选题 1 若有字符串char string和缓冲区char buf MAX LEN string非空 并且缓冲区长度MAX LEN大于string的长度 则将字符串string复制到缓冲区buf 下列做法正确的是 AB A spri
  • CentOS 7查看磁盘空间

    CentOS如何查看硬盘大小 CentOS是一种基于Linux的操作系统 主要用于服务器端应用 在服务器管理中 硬盘大小是一个非常重要的指标 查看硬盘大小可以帮助系统管理员有效地管理硬盘空间和避免硬盘满了的情况 方法一 使用df命令 df命
  • Unity 用脚本操作常用UI控件(上)

    控件介绍 在界面系统的术语中 将一个具有独立状态 外观和操作的对象称为控件 例如 常用的交互控件有按钮 输入框 滑动条等 常见的非交互式控件有文本标签 图片等 Unity采用了父子物体和组件的设计思想 其每个界面控件 往往也是由游戏物体挂载
  • 虚拟内存的最大容量与实际容量区别

    虚拟内存的最大容量与实际容量区别 1 概念介绍 虚拟内存的最大容量是计算机的地址结构 CPU寻址范围决定的 虚拟内存的实际容量是内存与外存之和 CPU寻址范围 两者的最小值 2 例题介绍 某计算机的地址结构是64位 按字节编址 内存大小51
  • 找准边界,吃定安全

    潜在的网络威胁 网络安全挑战层出不穷 如何确保网络安全 山石云 景赋能中小企业安全运营 让安全更有效 找准边界 吃定安全 往期文章 从访问控制谈起 再看零信任模型 威胁情报加持 泛边界下的全局主动防御体系如何着手 流量剧增 看山石网科如何打
  • UWB与蓝牙AOA定位技术简要对比

    1 UWB基本原理 UWB 超宽带技术 是基于IEEE802 15 4a z标准的利用纳秒级窄脉冲进行数据传输的无线通信技术 主要服务于微位置 micro location a person s placement to within a
  • java中如何将Long类型转为Integer类型

    注意不能直接在前面加个 int 而是 将Long型转换为int型 这里的Long型是包装类型 Long a 10 int b a intValue 即long intValue
  • Hx711调试过程

    1 体重板子最开始出现的问题 无法下载程序 指示灯不亮 解决办法 检查电源复位晶振 发现晶振还有 boot键坏了 2 问题 下载进程序以后 板子通过串口发到电脑上的数据不变 解决办法 先是查了关于HX711的各种资料 了解到 HX711芯片
  • pycharm内存不足时如何修改设置?

    Help gt Find Action gt type VM Options gt Click Edit Custom VM Options Pycharm 2016 2 will open the appropriate vmoption
  • MFC中操作Word文档

    首先我们需要导入word类库 电脑上需要安装了word 左击项目 点击类向导 添加类 C 选择类型库中的MFC类 本文章案例可点击下载 然后选择文件 位置选择从office安装目录中找到MSWORD OLB文件 然后点击 gt gt 添加所