我在做一个离线上报系统,要求是在Word内先建一个表格模板,在要求填入的空格处插入标签,然后在Delphi系统中把需要自动倒入到Word的内容直接通过连接Word模板进行自动填充。该系统的思想我知道,但不知道具体该怎么来实现,请教高手赐教!最好是给我一个现成的例子发到我的邮箱内,一定给高分!谢谢![email protected]

解决方案 »

  1.   

    模板中设定标志字符,然后用系统来查找这些标志字符,然后从数据库中取数据进行替换。
    可以多参看一下Office的在线帮助,多试一下吧。
    告诉你如何替换文字吧。
    注意:要uses Word97。(或者word2000)一定要引用!
    procedure openwordfile(Myword:TWordApplication;Myfile:string);//打开Word文档函数。
    //Myword:文档工程名称;Myfile:word文件名。
    var
      ItemIndex :OleVariant;
      FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
      PasswordDocument, PasswordTemplate, Revert,
      WritePasswordDocument, WritePasswordTemplate, Format,
      MatchCase,MatchWholeWord,find1,rep1,
        MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
        Wrap, Replace : OleVariant;
    begin
      Myword.Visible := false;
      FileName :=MyFile;
      confirmConversions := False;
      ReadOnly := False;
      AddToRecentFiles := False;
      PasswordDocument := '';
      PasswordTemplate := '';
      Revert := True;
      WritePasswordDocument := '';
      WritePasswordTemplate := '';
      Format := wdOpenFormatDocument;
      myWord.Documents.Open( FileName, ConfirmConversions,
      readOnly, AddToRecentFiles, PasswordDocument, PasswordTemplate,
      Revert, WritePasswordDocument, WritePasswordTemplate, Format );
      myword.Visible:=false;
    end;
    //打开Word文档函数(结束)
    Procedure RepData(MyDoc:TWordDocument;FindStr,RepStr:string);//利用数据库替换Word字符串函数
    //FindStr:被查找的字符串。RepStr:要替换的字符串。
    var
      MatchCase,MatchWholeWord,find1,rep1,Format,
        MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
        Wrap, Replace : OleVariant;
    begin
        Find1:=FindStr;
        Rep1:=RepStr;
        MatchCase:=false;
        MatchWholeWord:=true;
        MatchWildcards:=false;
        MatchSoundsLike:=false;
        MatchAllWordForms:=false;
        Format:=true;
        Forward:=true;
        replace:=wdReplaceall;
    //  WordApplication2.StartOfdocument; //到文首
        {if} Mydoc.Range.Find.Execute( find1, MatchCase, MatchWholeWord,
        MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
        Wrap, Format, Rep1, Replace );{ then showmessage('OK!!!!')}
        {else showmessage('finish!!');}
    end;
    以下是根据模板新建一个Doc文件。
          FileName := Opendialog1.FileName;
          itemindex:=1;
          tempPlate:=Filename;
          newtemplate:=false;
          WordApplication1.Connect;
          WordApplication1.Visible:=true;
          WordApplication1.Documents.Add(TempPlate,newtemplate);
          WordDocument1.ConnectTo(WordApplication1.Documents.Item(itemindex));以下是我找到的一段控制WORD文档的程序,可以看看。
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      WordApplication1.Connect;
      WordApplication1.Visible := True;
      visible:=true;
     // wordapplication1.Documents.Add()
      WordApplication1.Documents.Add(EmptyParam,EmptyParam);
      WordDocument1.Connect;
      WordApplication1.ActiveWindow.View.Type_:= wdNormalView;
      WordApplication1.Selection.Font.Name :='黑体';
      WordApplication1.Selection.Font.Size := 16;
      WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter;
      WordApplication1.Selection.TypeText('自定义表头内容');
      WordApplication1.Selection.TypeParagraph;
      WordApplication1.Selection.TypeParagraph;
      WordApplication1.Selection.Font.Name :=  '宋体';
      WordApplication1.Selection.Font.Size :=12;
      WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphRight;
      WordApplication1.Selection.TypeText('日期'+formatdatetime('yyyy"年"mm"月"dd"日"',now));
      WordApplication1.Selection.TypeParagraph;
      WordApplication1.Selection.TypeParagraph;//回车
      WordApplication1.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft;
    end;