delphi 在word模板中贴数据

如果需要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



猜你喜欢

转载自blog.csdn.net/camillect/article/details/80945071
今日推荐