如何从数据库里读出信息替换Word里相应的内容?

Description of your first forum.

如何从数据库里读出信息替换Word里相应的内容?

帖子kxh201 » 星期四, 2005年9月8日 11:14


我有一个数据库,简单的说,里面有用户名和财务支出两个字段;还有一个关于财务通知单的Word文档,包含有用户名及其财务情况和其它文本信息的通知,它们的格式不一样。我想在delphi里实现从数据库里读出信息到Word里面,每个用户占一页,然后打印。我知道有一个办法是用两个字段信息来替换Word里面相应的两段文本(即预先写好模板,然后替换用户名及其财务情况)。不知如何实现?或者哪位高手还有其它的高见?请不吝赐教,谢谢!
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子chenybin » 星期四, 2005年9月8日 11:24


在Word里面放书签,替换书签内容
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子kxh201 » 星期四, 2005年9月8日 16:49


谢谢,能给出替换书签的源代码吗?
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子chenybin » 星期四, 2005年9月8日 17:19


先看下面的链接,能满足你的要求了

http://www.delphibbs.com/delphibbs/dispq.asp?LID=313727

http://www.delphibbs.com/delphibbs/dispq.asp?LID=737517

------------------------转自网络
也谈用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作报表输出工具的最大功效。

(南京 方舟)
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子kxh201 » 星期五, 2005年9月9日 16:22


中呀,保存下来以后好好研究研究。
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子liubin44966 » 星期五, 2005年9月9日 16:52


chenybin 高手,学习
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子chenybin » 星期五, 2005年9月9日 17:05


楼主,如果搞定,记得结贴阿,不枉我辛苦一趟帮你找资料,万分感激阿
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子lao菜鸟 » 星期五, 2005年9月9日 17:20


呵呵,我也需要这样的代码,在此谢谢各位了
 
 
 

如何从数据库里读出信息替换Word里相应的内容?

帖子kxh201 » 星期六, 2005年9月10日 15:39


OK.