基于Aspose.Word控件对Word文档操作

      最近的项目里遇到这样一个需求:WebForm系统里客户在奖金分配完成后,需要将分配结果导出成纸制,以做备份.一开始这个需求很简单,使用如图-1所示的方式,拼接好htmltable字符串以后,也是可以导成Excel文件,然后客户再打印出来. 这种方式本身有不好的地方,就是生成Excel文件并不是标准的Excel文件.

clip_image002

图-1

      结果客户又提出,需要将每个职工的手工签名图片,也一并导出并打印出来.额,想了想,用这种方式恐怕不能实现.改变思路,还好项目组里使用了Lodop的Web打印控件,顺便给这个控件做下广告,在Web打印控件里,它确实非常强大,推荐大家使用,我的另一篇贴子对此控件有所介绍,欢迎大家阅读

      使用这个控件,在拼接htmltable字符串时,只须将图片处理为<img src=.. />这种方式就可以了,也是可以实现图片一并导出的.到此,以为可以清静一段时间了.如图-2所示

clip_image003

图-2

      结果过了一个星期,客户又说,能不能再加个Word文档里的页脚,还有最好导出来可以实现编辑.额,客户是不是觉得我们搞软件开发的太闲了,找点事情给我们做呢?

      带着这个困惑,继续完善他们提出的需求.如果继续使用这个打印控件的话,页脚的问题可能可以解决,但要实现可再编辑,比如修改标题之类的,恐怕就不可以了.不如直接导成Word文件,让他们自己调整布局,修改标题之类的,岂不是一劳永逸.

      微软提供一个DLL文件,是非可视化操作Word文档的,看了一遍代码,感觉比较复杂,而且它在进程控制方面也不是很好,继续寻找.

      还好,最后还是找到了另外一个控件,就是我今天要推荐给大家使用的控件Aspoe.Word控件,简单说,它也是一款非可视化的操作Word文档的类库,功能确实非常强大,而且,它可以在不安装Office的情况下,也可以实现对Office文档进行编辑.

      好了,废话不多说了.我们首先还是要制作一个模板,模板制作是有规则的,如图-3所示

clip_image005

图-3

说明

1. 表格里表示多条数据,图标列表示可以将图片导进来

2. 每个关键字,都是以{MERGEFIELD开头,以MERGEFORMAT}结尾的

3. TableStart:toolbar关键字,表示toolbar表开始循环

4. TableEnd:toolbar关键字,表示toolbar表结束循环

5. 图标中的Image:picname,表示导出的是图片,picname是图片的完整路径就可以,类库本身会将图片自动读进来的.我们也不必先将图片转进二进制再导进来

6. 操作员和操作日期的关键字,是处理单个字段的

      OK,现在我们来看看代码如何编写?如图-4和图-5所示

clip_image007

图-4

clip_image009

图-5

说明

1. 首先要读取Word模板文件,就是如图-3所示的文件

2. 取待导出数据,本示例中是select buttonname,button,picname from ad_toolbar,注意生成的DataTable对象,它的TableName就是模板文件中的toolbar,它是通过这个识别的.

3. picname的路径要填写完整

4. 使用doc.MailMerge.ExecuteWithRegions()方法即可,它有几个重载方法,可加载DataSet或DataTable

5. 加载单条栏目值的方式也比较简单,直接替换即可

6. 增加页脚的方式,代码这样写就可以了,最后保存即可.注意doc.Save()方法的最后一个参数,SaveFormat,它是一个枚举,支持很多种文件格式

看下最终导出的文档,如图-6所示

clip_image011

图-6

      园子里有几篇类似的文件,大家也可以参考下,地址如下,它使用的是书签方式,而且这个地址里提供的这个类库的破解版下载,嘿嘿.这里偶就不提供了

http://www.cnblogs.com/sendrylee/archive/2010/04/01/1702463.html

      至此Word文档的导出已经介绍完了,导出就需要有导入,接下来我们再使用这个控件实现导入Word文档,其他也比较简单,我们先看看要导入的文档内容.如图-7所示

clip_image013

图-7

      文档内容比较典型,有多行文字,也有表格,表格里也有文字.当然图片也是可以导进来,需要二进制转换一下才可以,本示例中没有提供.我们直接看导入的代码好了,如图-8所示

clip_image015

图-8

      从这个类库提供的类来看,有点html dom操作的意思,这种方式比较简单,大家只要注意ChildNodes结点的类型就可以了,看下导进来的数据,如图-9所示

clip_image016

图-9

      这个控件官网地址:http://www.aspose.com/

      它本身提供了很多非常好用的类库,Word类库只是其中之一,还可以操作Excel文档的Aspose.Cells类库,有兴趣的朋友可以去下载

 

示例代码

基于Aspose.Word控件对Word文档操作.Files

你可能感兴趣的:(word)