我现在要实现2个WORD文档,现在要把他合并成一个(在程序中可以是WORDAPPLICATION也可以OLE)请问我该怎么做不过如果能实现把多个流都追加到一个OLE或者WORD文档也行谢谢!!!!!!!

解决方案 »

  1.   

    //========begin保存为doc文件========//
    Procedure BlobFld2OleSaveasdoc(var dataQuery:TQuery;fldName:String; Ole: TOleContainer);
    var
     OleStream:Tstream;
     NameId: String;
    begin
      NameId := dataQuery.FieldByName('element_Id').asstring;
      OleStream := dataQuery.CreateBlobStream(dataQuery.fieldbyName(fldName),bmRead);
      if OleStream.Size >0 then
         begin
          OLE.LoadFromStream(OleStream);
          Ole.SaveAsDocument(TempPath+NameId+'.doc');//TempPath 为.doc文件的路径
          Ole.Close ;
          OleStream.free;
         end else
         begin
          Ole.CreateObject('word.document',false);
         end;
    end;
    //========end保存为doc文件========//FileListBox1.Directory := TempPath;
    FileLIstbox1.Mask :='*.doc';
    //Filelistbox1 用于取“.doc”文件
     //========begin合并doc文件========//
      TempFileName := extractfilepath(Application.ExeName)+'TempdocFile\Tempdoc.dot';
    //tempdoc.dot用于存放合并的主文件 
     wordapplication1.Connect;
      wordapplication1.Documents.Open(TempFileName,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);WordDocument1.ConnectTo(wordapplication1.Documents.Item(TempFileName));
      WordDocument1.Select ;
      WordDocument1.Range.Cut ;//清空.dot文件
      for FileNameOrder := 0 to  FileListBox1.Items.Count -1 do
      begin
        FromFileName := TempPath + FileListBox1.Items.Strings[FileNameOrder];
        wordapplication1.Documents.Open(FromFileName,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);
        WordDocument2.ConnectTo(wordapplication1.Documents.Item(FromFileName));
        WordDocument2.Select ;
        WordDocument2.Range.Copy;
        WordDocument2.Close ;
        WordDocument1.Paragraphs.Last.Range.Paste;
      end;{for for FileNameOrder := 0 to  FileListBox1.Items.Count -1}
      Wordapplication1.Visible:=true;//结果显示。
      //========end合并doc文件========//
      

  2.   

    uses comobj;
    procedure Tmenufrm.Button1Click(Sender: TObject);
    var
      oe:variant;
    begin
      oe:=CreateOleObject('word.Application');
      oe.visible:=true;
      oe.Documents.Add(DocumentType:=wdNewBlankDocument);
      oe.ChangeFileOpenDirectory(文件路径);
      oe.Selection.InsertFile(FileName:='doc1.doc', Range:='', ConfirmConversions:=False, Link:=False, Attachment:=False);
      oe.Selection.InsertFile(FileName:='doc2.doc', Range:='', ConfirmConversions:=False, Link:=False, Attachment:=False);
      oe.Selection.InsertFile(FileName:='doc3.doc', Range:='', ConfirmConversions:=False, Link:=False, Attachment:=False);
    end;
    补充,第一行再补充上word2000或wordxp(视乎你安装DELPHI时的OFFICE选项)
    方法二:form中放两个控件wordApplication1、worddocument1.procedure TForm1.Button1Click(Sender: TObject);
    begin
      wordapplication1.Connect;
      wordapplication1.Visible:=true;
      wordapplication1.Documents.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      worddocument1.ConnectTo(wordapplication1.ActiveDocument);
      wordapplication1.ChangeFileOpenDirectory(文件路径);
      wordapplication1.Selection.InsertFile(doc1.doc',EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      wordapplication1.Selection.InsertFile(doc2.doc',EmptyParam,EmptyParam,EmptyParam,EmptyParam);
      wordapplication1.Selection.InsertFile(doc3.doc',EmptyParam,EmptyParam,EmptyParam,EmptyParam);
    end;