如果需要word模板,并且在delphi中将数据插入到word中的操作步骤:
下面操作涉及的变量:
var
i,j:integer;
FileName:string;
vl_str,vl_sql:string;
ksh,kslb:string ;
bookmarkCount,vl_answer:integer;
bookmarkName:string;
FWord,MyDoc:Variant;
FPicture,FEWM : OLEVariant;
FDoc:Variant;
ConfirmConversions, ReadOnly, AddToRecentFiles,
PasswordDocument, PasswordTemplate, Revert,
WritePasswordDocument, WritePasswordTemplate, Format: OleVariant;
OleSaveChange:OleVariant;
vl_temp,v_date:string;
1、创建word对象。
try
Fword:=GetActiveOleObject('Word.Application');
except
try
Fword:=CreateOleObject('Word.application');
FWord.visible:=true;
except
messagebox(handle,'创建Word对象失败!','错误信息',MB_OK+MB_ICONINFORMATION);
exit;
end;
end;
2、打开word模板并获取模板中的书签(书签是需要插入内容的位置)。
FDOC:= Fword.Documents.Open( FileName, ConfirmConversions,
ReadOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
Revert, WritePasswordDocument, WritePasswordTemplate, Format );
bookmarkCount:=FDOC.application.activedocument.bookmarks.count;
3、获取的内容插入到对应的书签中。
for j:=1 to bookmarkcount do
begin //InsertAfter
bookmarkname:=FDOC.application.activedocument.bookmarks.item(j).name;
bookmarkname:=StrUpper(pchar(bookmarkname));
if pos('KSH',bookmarkname)>0 then
begin
FDOC.application.activedocument.bookmarks.item(j).range.InsertAfter(change(KSH));
end;
if pos('DQRQ',bookmarkname)>0 then
begin
FDOC.application.activedocument.bookmarks.item(j).range.InsertAfter(change(v_date));
end;
if pos('XM',bookmarkname)>0 then
if qry2.FieldValues['xm']<>null then
begin
FDOC.application.activedocument.bookmarks.item(j).range.InsertBefore(change(qry2.FieldValues['xm']));
end;
if pos('LQZY',bookmarkname)>0 then
if qry2.FieldValues['lqzy']<>null then
begin
FDOC.application.activedocument.bookmarks.item(j).range.InsertBefore(change(qry2.FieldValues['lqzy']));
end;
if pos('KSZP',bookmarkname)>0 then
if (qry2.FieldValues['kszp'] <>null) and (qry2.FieldValues['kszp']<>'') then
begin
FDOC.application.activedocument.bookmarks.item(j).range.InlineShapes.AddPicture('d:\KSZP.jpg');
end;
if pos('TM',bookmarkname)>0 then
begin
FDOC.application.activedocument.bookmarks.item(j).range.InlineShapes.AddPicture('d:\ewm.jpg');
end;
end ;
4、word的打印。
FDoc.PrintOutOld;
5、书签插入到word并且打印之后,word不保存,且关闭word文件但不关闭word对象。
OleSaveChange:=False;//$00000000;
FWord.Documents.close(OleSaveChange,EmptyParam,EmptyParam);
如果需要关闭word对象,执行Fword:=unassigned