WPF应用程序生成Word文档测试
莫名其妙地有了这个需求,于是进行了一下实战。本文使用天气预报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文档测试相关推荐
- Java生成Word文档
在开发文档系统或办公系统的过程中,有时候我们需要导出word文档.在网上发现了一个用PageOffice生成word文件的功能,就将这块拿出来和大家分享. 生成word文件与我们编辑word文档本质上 ...
- 使用HTML文件作为中转生成WORD文档
<霍元甲>中的乞丐说,就在今天.是的,就在今天,尽管我的论文没有遵循问题导向的研究思路,尽管我答辩时同几个不懂技术的专家简直是在鸡同鸭讲,答辩委员会还是一致通过,建议授予我管理学硕士学位. ...
- Python提取Word文档中所有超链接地址和文本
使用Python扩展库python-docx操作Word文档的相关文章,可以阅读: Python批量导入图片到Word文件 Python查找Word文件中红色和加粗的文字(附元宵节送书活动中奖名单) ...
- java 生成word_Java Web 生成Word文档(freemarker方式)
首先在pom文件中加入下面这个依赖(不是Maven项目的话,把jar包导入项目即可) org.freemarker freemarker 2.3.23 1.创建带有格式的word文档,将该需要动态展示 ...
- Word文档处理控件TX Text Control .NET for WPF
Text Control .NET for WPF是一款功能全面的Word文档处理控件,可进行所见所得的文档编辑,加载.保存.编辑DOC.DOCX.RTF等文件,利用该控件还可以构建强大的Word报表 ...
- (叠词检查器)检查word文档的连续重复字,例如“用户的的资料”或“需要需要用户输入”之类的情况。Word测试文档的内容由学生决定。
检查word文档的连续重复字,例如"用户的的资料"或"需要需要用户输入"之类的情况.Word测试文档的内容由学生决定. import re # 导入正则的一个模 ...
- 计算机技能测试word文档,计算机应用基本技能测试 二.doc
文档介绍: 第一题在Word环境下,输入图片上的文字,制作表格,并编辑排版出图片所给的效果(25分).其中:1.标题是三号黑体字且居中;文字是小四号宋体字;段落的首行有两个汉字的缩进;2.文档选用的纸 ...
- wpf采用Xps实现文档显示、套打功能
原文:wpf采用Xps实现文档显示.套打功能 近期的一个项目需对数据进行套打,用户要求现场不允许安装office.页面预览显示必须要与文档完全一致,xps文档来对数据进行处理.Wpf的Document ...
- java word打印_如何通过Java打印Word文档
本文将介绍如何使用Java程序来打印Word文档.打印可分为两种方式:一是打印到物理打印机:二是打印到虚拟打印机. 使用工具:Spire.Doc for Java 测试环境: ●Intellij Id ...
最新文章
- 用 GRUB 引导自己的操作系统
- winSockets编程(二)socket函数
- envi读取格式ang 还是mtl,Landsat FAST文件格式及在ENVI中的读取方法
- kotlin学习笔记——泛型及reified函数
- rabbitnq 源码安装_linux下源码安装rabbitMq
- react获取全局_使用react hooks实现的简单全局状态管理
- 工作131:根据请求返回报错
- PHP MYSQL关键词统计系统_PHP MySQL Order By 关键词
- Android静态代码扫描效率优化与实践
- Ubuntu 禁用 触摸板
- mysql增加表中数值的sql语句_sql语句--MySql添加表数据
- leetcode每日一练(第一天)
- 组播负载分担、静态组播路由和MBGP技术原理
- vs code发布1.37,全部换新的图标,这跟java是有仇吧,.java图标无法接受
- 【渝粤题库】陕西师范大学202161社会保障学 作业(高起专)
- .NET Core(C#)使用Titanium.Web.Proxy实现Http(s)代理监控请求的方法及示例代码
- 如何搭建DHCP服务器及自动获取IP地址及相关操作
- 大胖子走迷宫 [蓝桥杯 ]
- 阿里IOT云飞燕平台的使用和感悟。
- CTF writeup 0_IDF实验室