基于COM组件的合同文本自动生成系统

时间:2022-08-13 11:12:21

基于COM组件的合同文本自动生成系统

摘 要: 对合同文本手工录入方式存在的问题进行了分析,提出在C#环境下利用COM组件读/写MS Office Word和Excel文件的技术,自动地生成Word格式合同文件的方法,并且根据该方法实现了自动生成合同文件的软件系统。通过在陕西省电力物资公司的实际应用,验证了该方法的可行性和高效性。

关键词: Com组件; C#; MS Office; 文档自动生成系统

中图分类号: TN911?34 文献标识码: A 文章编号: 1004?373X(2013)12?0061?04

伴随计算机和网络技术的飞速发展,电力企业大规模开展了信息网络的建设和信息系统的开发,信息技术的应用领域已经深入到电网生产、经营和管理的各个环节。电力物资公司作为电力系统的物资专营企业,主要承担着电力设备的招标、订货和采购工作,日常业务需要处理大量的合同数据。

目前物资合同数据来自于电系统的ERP数据库,以Excel文件格式导出,采用人工方式把数据文件中的合同数据填入Word格式的标准合同文件。在该过程中,人工填写数据的做法存在问题较多。通常一个Excel数据文件就会有几十甚至数百份合同数据,如果采用人工录入数据的方式不仅劳动量大、生成合同速度慢、而且还容易出错;另外,如果Word合同模板发生变化,需要添加或删除一些数据项,那么按照原合同模板制作的合同就需要逐份修改或重新录入,因而维护合同文件十分困难、不灵活。

为了解决这些问题,本文讨论了如何在C#环境下,利用COM组件读/写MS Office Excel和Word文件的技术[1?2],研究自动地生成合同文件的方法[3?6],实现了自动生成合同文件的软件系统,该系统的应用将大幅削减人为操作、提高工作效率和质量、进而提升企业形象带来良好的社会效益。

1 C#处理Excel和Word文档的方式

用Excel作为数据源保存数据,用Word作为数据呈献的载体显示数据,是企业信息系统输出数据时采取的典型的做法。本文的合同自动生成系统采用了这一方法。另外,在C#开发平台下,微软公司提供了专用于Office开发的程序集和相关的Office应用程序对象模型,即COM。利用COM和相关的程序集,可以在C#平台上实现对MS Office文件的各种操作。

1.1 用C#读取Excel文件

合同数据来自于ERP系统数据库,并且已经导出到Excel数据文件中,Word格式的合同将使用该数据文件来生成。因此首先读取Excel数据文件的内容,这里有2种方法。

1.1.1 第一种方法

1.1.2 第二种方法

2 系统模块结构

设计合同自动生成系统的目标是让合同编制人员能够灵活、快捷、准确地生成合同文档。该系统的整体架构如图1所示。首先从ERP中导出要生成的合同数据,将其存放在一份Excel文件中。然后根据需要准备Word标准模板(注:此处的“模板”仍是一个以doc为后缀的文档,不是指后缀名为dot的Word模板文件,文中出现的模板二字均照此意理解)。最后,系统的核心部分是合同自动生成程序,它的主要功能是按照输入的Word标准合同模板,从Excel文件中提取所需的数据并写入Word合同文件,从而形成符合要求的合同文本。

3 标准合同生成过程

3.1 Word标准合同模板制定

使用合同生成系统之前,需要准备Excel数据文件和Word标准合同模板文件。

Excel数据文件直接从ERP数据库中导出。

Word标准合同模板中包含2种性质的文字:固定不变的内容,即每份合同都相同的部分,例如合同中的法律声明、甲方联系人、甲方单位地址等文字信息;以及发生变化的内容,例如合同中的产品名称、产品价格等信息,这些变化内容来自于Excel数据文件,每份合同都不相同。对于可变的内容用统一格式的字符串填写,该字符串本质上起到占位符的作用,在自动填入信息时有助于查找和替换操作。它由2部分组成,第一是不会引起歧义的前后缀;第二是被前后缀围堵的部分,用来说明被替换的内容在Excel数据文档中的列名称。例如“autogen工程项目autogen”字符串表示应该用Excel数据文档中名称为“工程项目”的列所对应的内容来替换此处的字符串,添加前后缀“autogen”可以避免与合同的其他固定内容冲突,不会导致错误替换。当然,对Word文档进行定位可采用的技术还包括书签定位、域定位等[3?10],但不如直接填写查找字符串方便,比较适合标准模板的编写人员所采用。

另外,对于合同模板中的“明细表”,其中要填写的记录数量不固定,不能用查找和替换方式写入合同,对此采用了动态处理的办法,在程序中根据具体的明细数据行数向明细表填写数据。

Word标准合同模板的准备工作比较复杂,但是该模板一般不会发生变化。如果必须修改标准合同模板,模板修改只需修改固定内容或添加/删除可变内容的替换字符串即可。

3.2 自动生成Word标准合同

自动生成Word标准合同的算法如图2所示。大致可以分为4个步骤:

(1)把Excel数据文件中的信息读取到DataSet数据集合内;

(2)检查DataSet中的当前行数据是否为新合同数据的开始,即合同首行数据,如果存在该行数据则打开Word合同模板,采用逐项查找?替换或查找?修改?替换的方法填充合同模板中的可变数据;如果该行数据不存在,则说明已经处理至数据文件末尾,退出程序;

(3)检查该份合同是否有明细项(行),如果有则采用循环的方式逐行把明细项填入Word模板中的“明细表”,如果没有则直接把合同数据首行写入该表。

(4)保存按模板生成的合同,然后返回到步骤(2)。

4 标准合同生成技术的实际应用

5 结 语

本文在基于COM组件技术对Excel和Word操作支持的基础上,提出了自动生成Word格式合同文档的方法,并根据该方法实现了合同文档自动生成系统。在陕西省电力物资公司的实际应用中,验证了这种技术的可行性和高效性。

但是,系统仍有一些不足之处,还存在以下几方面的后续研发工作:Word合同模板中动态内容的增减仍要靠人工打开Word文档增删占位字符串,应能提供更好的人机界面,通过鼠标拖拽的方式从Excel数据文件中选择出Word合同模板所需的占位字符串。从而提高模板制作的自动化程度,减少人为操作失误;标准化合同模板的规范化问题,合同模板的规格和标准越规范,利用计算机技术进行自动化处理的程度就越高;该软件系统能否自动生成其他类型的文件,即能否提高它的抽象性和通用性问题。

参考文献

[1] FAISON Ted. Visual C#基于组件的开发[M].北京:清华大学出版社,2003.

[2] LIBERY J, MACDONALD B. C#3.0学习指南[M].北京:人民邮电出版社,2010.

[3] 葛芬,吴宁.基于多种技术的Word设计文档自动生成平台[J]. 电子科技大学学报,2007,36(2):263?266.

[4] 王国良,刘学辉,冯光焰.VB. NET中实现Excel自动化编程[J].计算机与网络,2009(1):55?58.

[5] 宋雅娟,边晶,岳莉.文档的程序自动填写技术在信息管理系统中的应用[J].长春大学学报,2011(2):15?17.

[6] 余继军,王敏.基于C# 3.0实现Excel自动统计Word文档[J].重庆文理学院学报:自然科学版,2010(1):70?72.

[7] 杜秋霞.Visual C#的Excel编程[J].青海师范大学学报:自然科学版,2006(3):53?56.

[8] 黄伟.基于C#的Word文档自动生成技术的研究与应用[J].南通职业大学学报,2008,22(2):11?16.

[9] 罗许练.基于C#.NET的动态Word文档生成及数据填充研究[J].惠州学院学报:自然科学版,2009(6):9?13.

[10] 曹刚,韩作生.一种基于Word文档的手写批注实现方法[J].计算机工程与应用,2005,37(11):100?101.

上一篇:基于Matlab的有色溶液浓度测试研究 下一篇:Excel数据导入数据库的设计实现