请问如何用vc将两个word文档 合并成一个word文档。拜托了

解决方案 »

  1.   

    用automation把问打开取出内容再附加到另一个WORD文件里。
    msword.olb
      

  2.   

    我没有试过,不过,我想应该可以的。
    用二进制方式打开文件,一个用可以append(添加) 的,然后将另一个文件中的全部读出来,在写入第一个文件,就ok了,我想可以的。不过一定得用二进制。
      

  3.   

    还是用脚本方便void MergeDoc(LPCTSTR sDoc1, LPCTSTR sDoc2, LPCTSTR sDocOutput)
    {
        CString sScriptFile("c:\\tmp.vbs");
        CString sScript;
        sScript.Format(
            "merge \"%s\", \"%s\", \"%s\"\n"
            "sub merge(doc1, doc2, docoutput)\n"
            "    dim w,fso,stream,s\n"
            "    set fso = createobject(\"scripting.filesystemobject\")\n"
            "    fso.deletefile \"%s\", true\n"
            "    set w = createobject(\"word.application\")\n"
            "    With w.Documents.Add(doc1)\n"
            "        w.Selection.EndKey 6\n"
            "       w.Selection.TypeParagraph\n"
            "       w.Selection.InsertFile doc2 \n"
            "        w.Selection.TypeBackspace\n"
            "        .SaveAs docoutput\n"
            "        .Close\n"
            "    End With\n"
            "    w.Quit\n"
            "end sub",
            sDoc1, sDoc2, sDocOutput, sScriptFile);
        CStdioFile file;
        file.Open(sScriptFile, CStdioFile::modeCreate|CStdioFile::modeWrite);
        file.WriteString(sScript);
        file.Close();
        ShellExecute(NULL, "open", sScriptFile, NULL, "c:\\", SW_HIDE);
    }void CDd4Dlg::OnButton1() 
    {
        MergeDoc("c:\\a.doc", "c:\\b.doc", "c:\\c.doc");
        AfxMessageBox("done");
    }
      

  4.   

    #include "msword9.h"
    _Application WordApp; //代表WORD程序
    Documents docs,docs1; //代表一个WORD程序里的所有文档
    _Document doc,doc1; //代表一个文档 if(!WordApp.CreateDispatch("Word.Application",NULL))//创建一个新的word程序
    {
    AfxMessageBox("创建ms_word服务失败");
    exit(1);
    } //让用户能够查看自动化的过程
    WordApp.SetVisible(true);
    //让docs和word程序连接,docs代表word中所有文档
    docs=WordApp.GetDocuments();
    COleVariant covOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
    //用docs来打开一个文档,并将句柄返回给doc
    doc=docs.Add(COleVariant(".\\ox.doc"),covOptional,covOptional,covOptional);//将ox1追加到这个ox中
    doc1=docs1.Add(COleVariant(".\\ox1.doc"),covOptional,covOptional,covOptional);//原word Paragraph paragraph,paragraph1;//用来表示文档中某一段
    Paragraphs paragraphs,paragraphs1;//用来表示文档中所有段
    paragraphs1=doc1.GetParagraphs();
    paragraphs=doc.GetParagraphs();
             for(int i=1;i<=n;i++)//n表示ox1一共的段数
             {
                 paragraph1=paragraphs1.GetItem(n);
        Range r=paragraph1.GetRange();
                 r.Copy();//copy
                 paragraph=paragraphs.GetLast();//得到最后一段
                 r=paragraph.GetRange();
                 r.Paste();//粘粘
              }