基于VSTO自动批量生成WORD文档的设计与实现_第1页
基于VSTO自动批量生成WORD文档的设计与实现_第2页
基于VSTO自动批量生成WORD文档的设计与实现_第3页
基于VSTO自动批量生成WORD文档的设计与实现_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于VSTO自动批量生成WORD文档的设计与实现摘要:批量制作统一格式的Word文档在教育和商务活动中使用得很广泛,利用.NET和VSTO技术,在用户自定义格式的Word文档中嵌入数据库字段变量,并实现自动批量生成Word文档。关键词: VSTO,.NET,Word, Office, 批量 引言在日常的生活工作中,常常需要制作大量的信函、请柬、证书等等统一格式的Word文档,这是一项重复而繁琐的工作。通常完成这些工作的方法有两种:一是首先制作一个文档模板,然后通过重复的复制粘贴来手工完成任务,这种方法耗时费力,不适合制作大量的文档;另一种是使用Word提供的一项“邮件合并”的数据管理功能,该功

2、能可以在固定内容的文档中合并一些数据源资料,从而批量生成需要的文档,但是数据源是一些手工制作的数据表或Excel表,记录比较多时容易出错并且工作量较大。本文使用.NET和VSTO技术,开发了一个Word的外接程序(见下图1),该程序可以读取已有数据库中所需要的数据字段,然后通过拖拽的方式把数据源放到自定义格式的Word文档中,完成文档定制后还可以自动的生成批量的Word文档。图1 系统运行效果1、 主要技术VSTO(Visual Studio Tools for Office)是Microsoft公司推出的专门用来开发Office应用程序的可视化工具,它集成在Visual Studio .NE

3、T中并可以利用.NET Framework的所有特性和能力去定制Office。以下是本文主要使用的.NET和VSTO技术:(1)Word Add In:是Word的外接插件,开发好的插件程序嵌入到Word当中,可以应用于所有的Word文档。(2)Ribbon:是全新的固定式工具栏界面,它是继下拉式菜单后新的标准用户界面,在Office 2007和Windows 7中已经开始大规模被使用。在VSTO当中,可以很方便的对Ribbon功能区进行定制。(3)Custom Task Pane:称为任务窗格,是一种附加到Word或Excel上的Windows窗体控件,在VSTO中,可以像开发Windows

4、窗体应用程序一样定制各种各样的窗体和应用程序。(4)读写Word文档:Word文档包括了文档内容和文档格式,VSTO可以用多种方式读取Word文档中的内容和格式,另外.NET也提供了很多编辑和生成Word文档的类。(5)LINQ: 称为语言集成查询(Language Integrated Query),是 Visual Studio 2008 和 .NET Framework 3.5 版中一项创新,它在对象领域和数据领域之间架起了一座桥梁,通过LINQ可以使用一种类似SQL的语法来查询任何形式的数据。2、 方案设计2.1、设计思路系统任务是要批量生成信函、请柬、证书等等统一格式的Word文档,

5、分析这些文档可以得出任务需要完成以下功能:(1)这些文档包括了两部分:不变部分和变化部分,不变部分是指生成的所有Word文档中具有相同内容和格式的部分;变化部分是指生成的文档中不相同的部分,例如: 批量生成信封,寄信人信息是不变部分,而收信人信息是变化部分。不变部分是由用户在Word中自由定制和编写,为了提高效率,变化部分则是来自于相关的数据源,这部分也是任务处理的重点。(2)定制完文档的不变和变化部分后,还要批量的生成所有的Word文档。这部分也涉及两个问题:一个是如何读取定制文档的不变部分和变化部分;二是在批量写Word文档时,如何把变化部分(数据源的数据)和不变部分合并成一个文档。根据上

6、面的分析,制定了以下的方案:开发一个Word的外接插件程序,可以在Word中Ribbon工具栏中打开该程序,程序运行时,在Word工作区的右侧将会出现任务窗格,在上面可以根据用户的需要选择不同的数据库、数据表和数据字段,通过拖拽的方式把数据字段拖到自定义文档的相应位置中,完成定制文档后,就可以点击任务窗格中的批量生成按钮来自动的生成所有的Word文档。2.2、系统架构系统设计的架构如图1所示,由以下几部分组成:(1)Word Document:分为不变部分和变化部分,不变部分可以在Office Word里正常定制格式和编写内容,变化部分可以从任务窗格中列出的数据字段中按需要拖过来。(2)Wor

7、d Add In:集成了所有的程序控制代码,包括了生成Ribbon工具栏界面、任务窗格等等,它一方面通过LINQ读取后台数据库,另一方面接受用户的拖拽数据字段的动作,最后还能自动生成所有的Word文档。(3)Database:是Word文档中变化部分的数据来源,一般是已有系统的数据库,例如:批量生成毕业证,那么毕业证中的学生姓名、系部、专业等变化部分的数据源就可以从教务系统的后台数据库中读取。图1 系统结构图3、 技术实现3.1、定制Ribbon功能区为了使用户很方便的调用到外接插件程序,本系统需要在Office Word的工具栏区添加一个Ribbon功能区,功能区内设置了一个调用程序任务窗格

8、的按钮。在VSTO中添加Ribbon功能区有两种办法:一是通过可视化设计器设计,另一种是用XML进行编写,下面的XML是本系统的Ribbon功能区设计代码,其中btCreateDoc是按钮名称,btCreateDoc_Click是按钮所触发的事件。 3.2、添加任务窗格任务窗格是实现系统功能的主要控件,并负责和用户进行交互,它是由Ribbon功能区的按钮所触发。添加任务窗格有两个步骤:(1)设计用户控件在.NET中,用户控件就是可以查看的类,可以通过用户控件设计器来设计,这种设计类似于窗体设计,以可视化的方式完成用户控件外观和行为的属性的设置。(2)把用户控件添加到任务窗格并在Word中显示出

9、来/定义任务窗格,并把用户控件UserControlCreateMassWord添加到任务窗格CustomTaskPane ctp = CustomTaskPanes.Add(new UserControlCreateMassWord(), CreateMassWord);/在Word中显示任务窗格ctp.Visible = true;3.3、使用LINQ 获取数据源Word文档中变化部分的数据是来源于后台数据库,本系统通过LINQ来读取后台数据库,其中需要获取的数据有:数据库名、数据表名列表、数据字段名列表,其中获取数据字段名列表的代码如下:/获取选定的数据表var table = (fro

10、m t in adc.Mapping.GetTables()where t.TableName=this.cbTable.SelectedItem.ToString()select t).First();/获取选定数据表的所有字段并添加到列表框里foreach (var col in table.RowType.DataMembers) this.lbField.Items.Add(col.MappedName); 3.4、拖 拽实现Word文档中变化部分是通过从任务窗格的字段列表中拖拽过来实现的,为了它能在批量生成Word文档前被程序识别出来,因此需要定义变化部分的数据格式。变化部分的数据格

11、式定义为:,实现代码如下:/拖拽动作触发以下程序private void lbField_MouseDown(object sender, MouseEventArgs e) /把数据字段名封装了定义格式后生成变化部分this.lbField.DoDragDrop(, DragDropEffects.Move);3.5、分析和读写Word文档用户完成Word文档的定制后(包括不变部分和变化部分),系统首先会读取和分析该文档,然后经修改后批量的写成新的文档,新的文档数实际上就是所选择数据表的行数,新的文档中把原文档不变的内容和格式保留下来,而变化的内容以数据字段的实际数据来代替。其中实现的关键代

12、码如下:/获取文档中每个段落的内容string str = newDocument.Paragraphsi.Range.Text;foreach (var col in table.RowType.DataMembers) /分析文档中是否存在着变化的部分if (str.IndexOf() = 0)/变化的部分使用对应的字段数据来代替 str = str.Replace(, dvcol.MappedName.ToString();4、 结束语自动批量生成Word文档系统的开发,利用了先进的.NET和VSTO技术,把程序嵌入到Word当中,增强了Word的功能,实现了固定格式的文档和变化的数据库有效的合并。实验表明系统可以大大的提高工作效率,适合于制作大批量的信函、证书、单据等等统一格式的Word文档。参考文献:1 叶明 张诤. 基于C#

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论