时间:2022-09-01 03:58:18
摘要:该文介绍了在Delphi7环境下通过Servers组件控制Word生成奖励评审系统中的项目推荐书的基本原理,并在此基础上给出了具体的实现过程。
关键词:奖励评审;Delphi7;Word;Servers;推荐书
中图分类号:TP311文献标识码:A文章编号:1009-3044(2010)16-4547-02
Application of the Convergence Technology of Delphi and Word in the Science & Technology Awards Evaluation System
HU Chang-xia,YAO Bao-qin,WANG Shu-hai
(Shijiazhuang Tiedao University, College of Information Science and Technology, Shijiazhuang 050043, China)
Abstract: The paper presents the rationale to contral Word to create project recommendation paper of the science & technology awards evaluation system by Servers Components in Delphi7 and shows the specific implementation process on this basis.
Key words: awards evaluation; Delphi7; Word; servers; recommendation paper
科技奖励评审工作作为科技管理中的重要组成部分,其实质是对科技成果的承认,对科技成果完成人员创造能力和辛勤劳动的认可,同时也是衡量科技人员贡献大小的一种标志。科技奖励评审系统的开发对促进管理的现代化,提高评审质量,使得奖励评审工作更加程序化和规范化都有重要的意义。
在评审过程中,如何能够把项目信息全面地展示给评审专家,成为影响评审工作公正性的重要因素。专家在评审项目时,了解项目信息的主要途径是纸质的项目推荐书,所以要求奖励评审系统生成的推荐书需准确、全面和快速。
在科技奖励评审系统的实现过程中,采用了B/S模式与C/S模式相结合的方式。考虑到科技奖励评审系统中【项目管理】子模块的用户为局域网内的奖励中心工作人员,且现在个人办公计算机的配置相对较高,所以该子模块的实现采用了C/S模式,开发工具选用了Delphi7。
本文就如何在Delphi7中操纵Word以实现【项目管理】模块中“生成推荐书”的功能进行了深入探讨。
1 Delphi7与Word融合的关键技术
Delphi7中访问与控制Word的方法主要有几下几种:
1.1 通过Delphi的控件TOleContainer 嵌入Word
这是最简单的OLE嵌入,能够直接调用Word文档,只需要使用ToleContainer.Run就可以将Word文档直接启动,且这样启动的Word文档与Delphi程序从界面上看是一个整体,但是它存在不可克服的缺点,即:不能通过Delphi控制Word文档,也就不能实现灵活操纵Word的目的。
1.2 通过导入类型库和直接访问COM接口控制Word
Word很好的支持了Com技术,Word提供的强大的编程接口技术能够使我们通过程序控制Word的任何一部分:无论是文件的打开、存盘、打印还是文档中表格的自动绘制。这种方法由于引入了Office软件目录中文件MSWORD9.OLB中的类库,对Word文档的控制比较灵活,但实现起来比较复杂。
1.3 使用CreateOleObject控制Word
使用CreateOleObject方式创建并调用Word文件,实际上还是通过OLE技术,但这种方式能够很好地控制Word文档,并能够使用Word的所有属性。但没有Delphi代码提示,需要编写异常事件的处理过程较多。
1.4 使用Delphi提供的Servers组件调用Word
利用Delphi提供的Servers组件控制Word简单方便,总体上看能够较好的实现Delphi对Word的控制,并能在编程时提供友好的代码提示。
2 科技奖励评审系统中推荐书的生成
河北省科技奖励评审系统中,项目申报的奖种有五类:突出贡献奖、自然科学奖、技术发明奖、科技进步奖和国际合作奖。申报每个奖种的项目所填的信息种类很多又不尽相同,以科技进步奖为例,此奖种的推荐书中至少包含十五页的内容,如图1所示。
针对图1中推荐书的复杂情况,本文首先在Word中设计好推荐书的各表格项,并将该文件保存;再利用Delphi控制该Word文件,将项目信息从数据库中读取出来并按顺序填充到相应表格的相应位置。本文采用了Servers组件调用Word的方法生成推荐书。
从图1可看出项目推荐书包括的内容和元素比较多,将相似的操作进行归类,对word的操作主要有以下几类形式:
1) 位置固定型
这是最基本的形式,如表1所示,要插入的内容位置固定,只需将项目的相应内容从数据表中读取并插入到Word文档中相应的位置即可,这种方法需要知道表格的序号和要插入的位置的行号和列号。由于Word格式的空白推荐书模板已经存在,所以表格的序号、单元格的行号和列号都可以得到。图1中的“一、项目基本情况”等属于此类。
2) 插入文档型
生成推荐书时,有时需要向推荐书中插入Word文档。
例如图一中的的“三、项目详细内容”一项,申报人上传的是一个Word文件,项目详细内容并没有保存在数据表中,所以在生成推荐书时需将该文档插入到推荐书“二、项目简介”和“四、主要技术创新点”之间。实现时需在推荐书的Word模板中欲插入文档的位置事先做好书签,用程序控制文档在书签处插入。
3) 插入固定表格型
有时推荐书模板中的表格数量少,需要插入新的表格。
比如图1的“七、候选人情况表”,在空白推荐书的模板中只有一页候选人情况,而99%的项目都有多个候选人,在生成推荐书时就需要多页候选人情况表,此时就需要插入候选人表格。这种情况需要先将可能要插入的表格做成Word文档,推荐书中可能插入表格的位置设置书签,需要插入表格时,将包含表格的文档插入到相应位置就可以了。
4) 生成pdf推荐书
为防止用户在生成推荐书后对项目信息内容进行修改,因此生成的Word推荐书用户是看不到的,他们看到的是pdf格式的。这需要调用Word打印机的功能,通过Adobe Acrobat 9提供的虚拟打印机功能将Word文档转换成pdf文件。
综上所述,第1)种情况需要确定表格的序号,而有时插入的文档可能包含表格,那样就会打乱原有表格的次序,尤其是插入详细研究内容文档时,其中包含的表格数目不定。鉴于这些原因,生成推荐书时采用的顺序为:先插入位置固定的项目信息内容,再插入含有固定表格的文档并填好项目信息,最后插入含有不确定表格的文档。具体顺序如图2所示。
通过Servers组件生成推荐书,首先要在窗体上放一个TWordApplication组件和一个TWordDocument组件,分别命名为WordApp和WordDoc。主要的操作如下:
1) 连接Word服务器
在Delphi环境下,通过WordApp的Connect方法连接Word服务器,Visable属性可设置Word界面是否可见。
WordApp.AutoConnect:=True;
WordApp.ConneetKind:=ckRunningorNew;
WordApp.Connect;
WordApp.Visible:=true;
2) 文档的创建与打开
在新建推荐书文档时需要调用推荐书模板,以便下面将项目信息插入到推荐书中的表格中,然后将创建的文档同当前Word应用程序连接起来。其实现过程可通过以下两条语句实现,其中Template参数表示需要调用的模板。
WordApp.Documents.Add(Template, NewTemplate, DocumentType, Visible);
WordDoc.ConnectTo(WordApp.Documents.Item(itemIndex));
3) 插入位置固定型项目信息
WordDoc.Range.Tables.Item(table_no).Cell(i,j).Range.Text:=information;
其中table_no表示要操作的表格序号,i和j分别表示表格的行和列,information是要插入的项目信息。
4) 插入文档
生成推荐书时要插入的表格应该是固定格式的,比如候选人表格,所以采用在推荐书中需要插入的位置设置书签,要插入的表格事先保存在一个Word文档中,需要插入表格时只要将此文档插入到相应的书签处就可以了,如果需插入多个表格,例如有多个候选人,重复执行即可,详细研究内容也按此方法插入。
itemindex:='BookMark';
vbookmark:=wordApp.ActiveDocument.Bookmarks.Item(itemindex);
vbookmark.Select;
WordApp.Selection.InsertFile(FileName);
其中BookMark为书签名称,FileName为要插入的文档名称。
5) 保存并退出文档
推荐书生成完毕之后需要保存并退出文档,具体事先如下:
SaveChanges :=wdDoNotSaveChanges;
OriginalFormat := wdOriginalDocumentFormat;
RouteDocument := false;
WordDoc.SaveAs2000(FilePath);
WordApp.Quit(SaveChanges, OriginalFormat, RouteDocument);
其中FilePath为要保存文件的路径。
6) 将Word文档转换成pdf文件
本方法调用的是虚拟打印机。
wordapp.ActivePrinter :='adobe pdf';
vbackground:=0;
vappend:=0;
vrange:=wdprintalldocument;
wordapp.PrintOut(vbackground,vappend,vrange);
其中adobe pdf是虚拟打印机的名称。
(7) 关闭连接
退出文档后,Delphi其实还在和Word连接,这时需要关闭连接。
WordApp.Disconnect;
3 结论
该文介绍了在Delphi7环境下通过Servers组件控制Word文档来生成项目推荐书的方法,它使用户能够在熟悉的Word环境下,对项目推荐书进行方便快捷的操作。并且,这种方法已经在奖励评审系统的前台网站得以应用,它将对任何开发环境控制Word文档提供有力的参考价值。
参考文献:
[1] 王文发.应用DELPHI7与WORD溶合技术实现试题库试卷的自动生成[J].延安大学学报:自然科学版,2006,25(1):21-23.
[2] 胡小红.基于DELPHI的WORD文档处理技术研究[J].电脑学习,2007(3):60-61.
[3] 刘裕维.基于网络的科技奖励评审的初步实践[J].企业科技与发展, 2009(22):254-255.
[4] 乐勇.Delphi与Word之间的结合技术[J].现代电子工程,2009(1):57-59.