以文本方式实现Word文档报表的解决方案(一)

      在中国,Word文档形成的表格(不是很规格的表格)在日常使用中非常多,在开发应用是,有大部分是以制作好的一个表格作为模块,然后往模板是填入不同的记录数据。我们可以直接通过WordAppliction来进行开发,但是必须安装Office,特别是在B/S的开发中,服务器调用WordAppliction更不是一种很好的解决方法,开发的过程更是一种烦琐加烦琐的做法。点用系统资源不说,也会导致系统的不稳定(对并发调用Word没有进行测试)。因此,在实际开发中,急需另外寻找一套更好的解决方案。

      公司新项目正是一个很多地方使用这种不规则表格的系统,这促使我完成这次的开发,对Office的开发还有很多功能待完成,特别是Excel部分也完全没有开发,所以现在把已完成的Word的应用发布出来,愿其他有需要的同志一起参详,以把Office应用这一块开发得更好,能减少大家重复开发的烦恼,我也可以在大家的研究中得到更好的学习。(在此多高王仕神同学,他给的以文本方式的思路,使得本人少绕弯路)

       在.net中,Framework4.0提供了对Office2007的开发包,包括Word和Excel的功能的调用等,但不知道有没有转换为Office2003文档的这功能(没有作这方面的研究),Office2007毕竟是一个Zip的压缩文档,新的基于XML规范的Office文档的标准也没有很多的研究,相信要熟练使用该开发包,非得不少时日,而且对我的方案(指Word文档,Excel文档好像是使用.net的开发包要好点)没有多大的帮助,于是本人选择了Word2003 以 XML保存方式作为报表的模板,成功生成报表后返回的是一个文本流,开发者可以保存为带有.DOC后缀给用户,就可以直接使用Office打开该文档了。

下面说说具体的实现步骤:

       本方案是参照是参照VBA的领域相关编程语言DSLDomain-Specific Languages)的思想,通过在文本中设置相关的公式(函数),系统根据该公式自动转换出相对应的数据,相当于很高级的查找和替换。

       1、采用XML作为Word文档的保存方式。在Office2007中的doc文档就是以XML的规范去保存的,Office2003保存的XML文档,规范、容易解释,比保存为Html的形式好多了,所以本方案采用XML的文档保存方式进行开发。

       2、做到通用、易用,该方案对于开发者来说是傻瓜式使用,方案只有一个简单的接口提供给开发都,真正的工作是在模板的设计(即DSL语言的学习),方案的接口只需要传递一个实体或实体集合和指定的模板名称,方案输出的是根据实体转换后的报表(实体可以是匿名类型等,即不需要强类型实体),由于是通过模板来控制具体的输出,所发开发人员并不需要预先安排输出的内容。所以基本上能满足所有的Word报表。

      3、易扩展。本方案设计和实现了很式公式,可以解决大部分的需求,如果需求扩充的,可以从FormulaUtility扩展方法,有兴趣都可以把该类做成插件的形式,本方案加载了该插件就可以实现特定的需求了。

 

转载请注明出处http://www.cnblogs.com/Yjianyong/archive/2011/01/10/1931132.html

       本期说到这里,下期待续......

posted @ 2011-01-10 21:13  Lance Yang  阅读(454)  评论(0编辑  收藏  举报