使用Word自动生成合同正文

liuhw8888 2003-08-03 05:24:48
在数据库中已有合同的基本资料字段:合同编号、客户名称、合同类别、租用物业地址、物业面积、租用单价、金额、合同起始日期、终止日期、按金等等。要求能由操作员自定义合同正文模板,由系统将以上字段自动写入到Word模板中,生成合同正文。
请提供源码,多谢!
...全文
455 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
nth 2003-08-22
  • 打赏
  • 举报
回复
可以先在每处要替换的内容用标记表示, 如#客户名称#
然后用组件的替换功能来予以替换掉相应标识.
liuhw8888 2003-08-03
  • 打赏
  • 举报
回复
写入字符的方法我知道,你的方法是将字符串写到Word文档最后,但我要求的是能够将指定的数据插入到文档中间,例如:
已写好的模板:
甲方代表:张三 合同编号:“此处插入数据库中的合同编号”
乙方代表:“此处插入数据库中的客户名称”

要求数据能够插入到文档中的指定位置。
  • 打赏
  • 举报
回复
楼上的例子都有了,剩下的就是用程序替换成 合同 正文 就 可以了。
huojiehai 2003-08-03
  • 打赏
  • 举报
回复

var WordApp: TWordApplication; WordDoc: TWordDocument;
var DocInx,FileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat: OleVariant;
begin
DocInx:=1;
oFileName := InFile;
oReadOnly:=true;

WordApp:= TWordApplication.Create(nil);
WordApp.Visible := false;
WordDoc:= TWordDocument.Create(nil);
WordApp.Documents.open(FileName,CfCversions,oReadOnly,AddToRctFiles,PswDocument,
PswTemplate,oRevert,WPswDocument,WPswTemplate,oFormat);
WordDoc.ConnectTo(WordApp.Documents.Item(DocInx));

For i := 1 To WordDoc.Tables.Count do //第 i 个表
begin
For iRow := 1 To WordDoc.Tables.Item(i).Rows.Count do
for iCol:=1 to WordDoc.Tables.Item(i).Columns.Count do
s:=WordDoc.Tables.Item(i).Cell(iRow,iCol);//取[iRow,iCol]列值
end;

if Assigned(WordDoc) then
begin
WordDoc.Close;
WordDoc.Disconnect;
WordDoc.Destroy;
WordDoc := nil;
end;

if Assigned(WordApp) then
begin
WordApp.Quit;
WordApp.Disconnect;
WordApp.Destroy;
WordApp := nil;
end;

end;

huojiehai 2003-08-03
  • 打赏
  • 举报
回复
这是操作Word 的例了,你改下就好了
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, Db, DBTables, Grids, DBGrids, ComCtrls,comobj,OleServer, Word97,
Word2000;

type
TForm1 = class(TForm)
Database1: TDatabase;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
DateTimePicker1: TDateTimePicker;
DBGrid1: TDBGrid;
DataSource1: TDataSource;
Query1: TQuery;
BitBtn1: TBitBtn;
WordApp: TWordApplication;
WordDocument1: TWordDocument;
Button1: TButton;
Button2: TButton;
procedure BitBtn1Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BitBtn1Click(Sender: TObject);
var
WordApp,WordDoc,WordTable:OleVariant;
i,j:integer;
begin
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=True;
form1.WordApp.Connect;
WordDoc:=WordApp.Documents.open('d:\1.doc',false,false,false,'','',true,'','','wdOpenFormatDocument');
WordTable:=WordDoc.Tables.Add(WordApp.Selection.Range,1,1);
//WordTable:=WordDoc.Tables.Add(WordApp.Selection.Range,DBGrid1.DataSource.DataSet.RecordCount+1,DBGrid1.Columns.Count);
{ for i:=1 to 2 do
//for i:=1 to DBGrid1.Columns.Count do
WordTable.Cell(1,i).Range.InsertAfter(DBGrid1.Columns[i-1].Title.caption);
i:=2;
with DBGrid1.DataSource.DataSet do
while not eof do
begin
for j:=1 to DBGrid1.Columns.Count do
WordTable.Cell(i,j+1).Range.InsertAfter(DBGrid1.Columns[j-1].Field.Value);
Next;
Inc(i);
end; }
wordapp.doucuments.items.text:='aaabbb'{你想要加入的字符串}

//WordTable.Cell(1,1).Range.InsertAfter('sfsfsfsfs');
end;

procedure TForm1.Button1Click(Sender: TObject);
var
WordApp,WordDoc,WordTable:OleVariant;
i,j:integer;
begin
WordApp:=CreateOleObject('Word.Application');
WordApp.Visible:=True;
form1.WordApp.Connect;
WordDoc:=WordApp.Documents.open('d:\1.doc',false,false,false,'','',true,'','','wdOpenFormatDocument');


// wordapp.doucuments.items.text:='aaabbb'{你想要加入的字符串}
//worddoc.documents.item(1).Range.InsertAfter('test');//
end;

procedure TForm1.Button2Click(Sender: TObject);
var
MSWord:Variant;
str:string;
begin
str:=trim('sdsds');
MSWord:= CreateOLEObject('Word.Application');
MSWord.Documents.Open('d:\1.doc',false,false,false,'','',true,'','','wdOpenFormatDocument');//'+trim(dlxtform.Edit3.Text)+'\sfa\'+trim(DataModule1.ADOQuery14.fieldbyname('hybh').AsString)+'.doc', True);//´ò¿ªÍⲿWordÎĵµ
MSWord.Visible:=1;
str:='sfsdfsfsdfsdfsdfs';
MSWord.ActiveDocument.Range(0, 0);
MSWord.ActiveDocument.Range.InsertAfter(str);
MSWord.ActiveDocument.Range.InsertAfter(str);
MSWord.ActiveDocument.Range.InsertParagraphAfter;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

end.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧