莫名其妙地有了这个需求,于是进行了一下实战。本文使用天气预报api自动生成Word格式的报表,使用VSTO相关技术,在VS2017+Word2016中测试通过,结果如图:

Word模板制作

图中大标题及文末日期为两个格式文本内容控件(RichTextContentControl),而后用{1}表示即将添加正文的部分。如图所示:为了方便之后添加文字,将标题控件的标记(Tag)命名为TitleRTFControl,日期控件的标记(Tag)命名为DateRTFControl,将模板保存为Test.dotx。

在VS2017中新建WPF应用程序,添加对Microsoft.Office.Interop.Word和Microsoft.Office.Tools.Word的引用。并在MainWindow中添加按钮。
为方便起见,

using Word = Microsoft.Office.Interop.Word;
using Tools = Microsoft.Office.Tools.Word;

使用模板新建文档

Word.Application application = new Word.Application();//新建Word应用程序
application.Visible = true;//显示Word窗口,删除此句Word以后台方式运行
var document = application.Documents.Add(System.Environment.CurrentDirectory+"\\Test.dotx");//以模板新建文档

使用Tag寻找内容控件,获得其实例的引用,并修改其内容。注意,Word中数组的index多从1开始,而不是0

 #region 寻找内容控件Word.ContentControl TitleRTFControl = document.SelectContentControlsByTag("TitleRTFControl")[1];Word.ContentControl DateRTFControl = document.SelectContentControlsByTag("DateRTFControl")[1];#endregion#region 修改内容控件内容TitleRTFControl.Range.Text = "全国主要城市天气预报";DateRTFControl.Range.Text = DateTime.Now.ToString("yyyy年MM月dd日");#endregion

之后寻找文档中的占位符{1},全选文档,在选定范围内查找并选中。因Document.Range需传送两个object对象,故使用start和end对int进行封装。

#region 查找文档中的文字并选中
object FindText = "{1}";
object start = document.Content.Start;
object end = document.Content.End;
Word.Range range = document.Range(start, end);
range.Find.ClearFormatting();
if (range.Find.Execute(ref FindText))
{range.Select();
}
#endregion

替换文字,之前已从api中获取天气数据并存储在一个StringBuilder对象中。

#region 插入文字
Word.Selection currentSelection = application.Selection;
application.Options.Overtype = false;currentSelection.TypeText(stringBuilder.ToString());
currentSelection.TypeParagraph();#endregion

点击执行,效果良好。

WPF应用程序生成Word文档测试相关推荐

  1. Java生成Word文档

    在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上 ...

  2. 使用HTML文件作为中转生成WORD文档

    <霍元甲>中的乞丐说,就在今天.是的,就在今天,尽管我的论文没有遵循问题导向的研究思路,尽管我答辩时同几个不懂技术的专家简直是在鸡同鸭讲,答辩委员会还是一致通过,建议授予我管理学硕士学位. ...

  3. Python提取Word文档中所有超链接地址和文本

    使用Python扩展库python-docx操作Word文档的相关文章,可以阅读: Python批量导入图片到Word文件 Python查找Word文件中红色和加粗的文字(附元宵节送书活动中奖名单) ...

  4. java 生成word_Java Web 生成Word文档(freemarker方式)

    首先在pom文件中加入下面这个依赖(不是Maven项目的话,把jar包导入项目即可) org.freemarker freemarker 2.3.23 1.创建带有格式的word文档,将该需要动态展示 ...

  5. Word文档处理控件TX Text Control .NET for WPF

    Text Control .NET for WPF是一款功能全面的Word文档处理控件,可进行所见所得的文档编辑,加载.保存.编辑DOC.DOCX.RTF等文件,利用该控件还可以构建强大的Word报表 ...

  6. (叠词检查器)检查word文档的连续重复字,例如“用户的的资料”或“需要需要用户输入”之类的情况。Word测试文档的内容由学生决定。

    检查word文档的连续重复字,例如"用户的的资料"或"需要需要用户输入"之类的情况.Word测试文档的内容由学生决定. import re # 导入正则的一个模 ...

  7. 计算机技能测试word文档,计算机应用基本技能测试 二.doc

    文档介绍: 第一题在Word环境下,输入图片上的文字,制作表格,并编辑排版出图片所给的效果(25分).其中:1.标题是三号黑体字且居中;文字是小四号宋体字;段落的首行有两个汉字的缩进;2.文档选用的纸 ...

  8. wpf采用Xps实现文档显示、套打功能

    原文:wpf采用Xps实现文档显示.套打功能 近期的一个项目需对数据进行套打,用户要求现场不允许安装office.页面预览显示必须要与文档完全一致,xps文档来对数据进行处理.Wpf的Document ...

  9. java word打印_如何通过Java打印Word文档

    本文将介绍如何使用Java程序来打印Word文档.打印可分为两种方式:一是打印到物理打印机:二是打印到虚拟打印机. 使用工具:Spire.Doc for Java 测试环境: ●Intellij Id ...

最新文章

  1. 用 GRUB 引导自己的操作系统
  2. winSockets编程(二)socket函数
  3. envi读取格式ang 还是mtl,Landsat FAST文件格式及在ENVI中的读取方法
  4. kotlin学习笔记——泛型及reified函数
  5. rabbitnq 源码安装_linux下源码安装rabbitMq
  6. react获取全局_使用react hooks实现的简单全局状态管理
  7. 工作131:根据请求返回报错
  8. PHP MYSQL关键词统计系统_PHP MySQL Order By 关键词
  9. Android静态代码扫描效率优化与实践
  10. Ubuntu 禁用 触摸板
  11. mysql增加表中数值的sql语句_sql语句--MySql添加表数据
  12. leetcode每日一练(第一天)
  13. 组播负载分担、静态组播路由和MBGP技术原理
  14. vs code发布1.37,全部换新的图标,这跟java是有仇吧,.java图标无法接受
  15. 【渝粤题库】陕西师范大学202161社会保障学 作业(高起专)
  16. .NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理监控请求的方法及示例代码
  17. 如何搭建DHCP服务器及自动获取IP地址及相关操作
  18. 大胖子走迷宫 [蓝桥杯 ]
  19. 阿里IOT云飞燕平台的使用和感悟。
  20. CTF writeup 0_IDF实验室

热门文章

  1. MySQL报错 由于找不到msvcp120.dll
  2. 《最高人民法院 最高人民检察院关于办理侵犯公民个人信息刑事案件适用法律若干问题的解释》
  3. smbus总线单片机c语言程序,SMBus总线单片机硬件接口
  4. 精通DDR3 PCB设计
  5. Tomcat禁止打印日志
  6. MFC ODBC 学生成绩管理系统 示例
  7. 一文教你学会社交论坛小程序开发
  8. python获取期权行情包括k线,tick,greeks分时等数据
  9. Python爬虫—Scrapy框架—Win10下载安装
  10. 使用软件破解BIOS密码