谁能给出delphi输出数据到WORD,利用Word打印报表的例子!谁最快分数给谁。(90分)

  • 主题发起人 主题发起人 chinac
  • 开始时间 开始时间
也谈用WORD输出报表
  熟悉Delphi编程的朋友都对报表输出和打印的复杂感到头痛,利用WORD作为报表输出
的工具确实在有些时候能起到非常好的效果。笔者在编程中需要打印一个WORD表格,表格
中的内容需要自动生成,考虑到编程的快捷我采用Delphi4.0作为开发工具。但是如果利用
DELPHI的QReport控件来实现会比较复杂同时效果也不是很好,因而我采用WORD作报表输出。在这里,我想谈一点个人体会。
  下面介绍我是如何利用WORD作为报表输出工具的。实现的方法是制作一个空的表格作
为输出的模版,利用Delphi调用填充此表格模版,最后存为新的文件,利用Word来打印报
表并能得到报表文件。这里笔者采用了OLE AUTOMATION的方式,这种方式在应用中比较简
单,同时能实现的功能丰富全面。下面首先简单介绍OLE AUTOMATION(对象连接与嵌入自
动化)。它是部件对象模式(COM)的特征,是一种工业标准技术,其应用程序可用来显
露对象为开发工具、宏语言和其他支持自动化的应用程序。下面介绍程序的实现方式。
  首先我们用WORD生成报表模板文件,设文件名为“report.doc”。在文件中要输出内
容的位置插入书签(选择菜单插入书签,输入书签名)。书签在应用中起到定位插入内容的作用。本例中在report.doc文件定义了三个书签,书签名分别是:first、second、third,应用程序中三个TEdit变量first、second、third与之对应。为了说明实现的基本方法,我们采用了一个最简单的例子,将TEdit控件的内容自动插入WORD文件的相应书签指定的位置。
  在相应的应用程序中与生成报表对应的过程为createreport,程序代码为(由于不是讨
论数据库编程,这里省略了数据库的部分):
    unit main;
   interface
   ......
   type
   TMainForm = class(TForm)
   first:TEdit;
   second:TEdit;
   third:TEdit;
   createreportbutton: TBitBtn;
   procedure createreportClick(Sender: TObject);
   public
   wordapp:variant;
   ......
   end;
   var
   MainForm: TMainForm;
   ......
   implementation
   uses ComObj;
   ......
   procedure TMainForm.createreport(Sender: TObject);
   begin
   if(Application.MessageBox(‘你确定要生成report文档吗?’#13#10,
   ‘提示’,MB_OKCANCEL)=IDOK) then
   begin
   wordapp:=CreateOLEObject(Word.Application);
   wordapp.visible:=true;
   wordapp.documents.add(‘report.doc’,False);
   wordapp.Documents.Item(1).Bookmarks.Item(‘first’).Range.InsertAfter(first.text);
   wordapp.Documents.Item(1).Bookmarks.Item(‘second’).Range.InsertAfter(second.text);
   wordapp.Documents.Item(1).Bookmarks.Item(‘third’).Range.InsertAfter(third.text);
   wordapp.Documents.Item(1).Saveas(‘report1.doc’);
   end;
   end;
  本程序用Delphi4.0编译通过,系统必须安装了WORD97。运行时,在TEdit控件中输入
字符串,点击createreportbutton,程序自动启动WORD97,并打开当前目录下的
report.doc模板文件,将TEdit控件的内容分别插入相应的书签之后,最后将文件存为
report1.doc在当前目录下。
  笔者编程中发现利用OLE可以非常简单地实现自动生成WORD或EXCEL报表的功能,有兴
趣的朋友可以参考Delphi的帮助Developing COM-based Applications以及WORD97
中Visual Basic编程参考,发挥以WORD作报表输出工具的最大功效。
(南京 方舟)

--------------------------------------------------------------------------------

Copyright ©
1998-2000 非凡空间 Email: gmj@126.com

 
有个控件:aexd305, 很方便的,可以将dbgrid or db 输出为excel,word,html,
text等8种格式,支持OLE或文件(下载后请解密).
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
后退
顶部