用C#编程合并多个WORD文档

北大青鸟大学城校区logo 北大青鸟大学城校区
招生简章校园环境师资力量就业明星招生问答软件工程师北京大学学历学员项目联系我们 报名通道

免费在线咨询通道>>

免费在线报名通道>>

北大青鸟报名电话
当前位置:北大青鸟 > 软件教程 > .net教程 >

用C#编程合并多个WORD文档

标签:   分类:.net教程


   今天因为客户需要,需要将多个WORD文档合并成为一个WORD文档。其中,对WORD文档的合并方式分两种形式:

    一是复制合并;

    一是插入合并,即将多个文档按照先后顺序合并到另一个文档中.

    代码如下:

    using System;

    using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Word; using System.Reflection; using System.IO; using System.Diagnostics; namespace Eipsoft.Common

    {

    /// <summary>

    /// Word文档合并类

    /// </summary>

    public class WordDocumentMerger

    {

    private ApplicationClass objApp = null;

    private Document objDocLast = null;

    private Document objDocBeforeLast = null;

    public WordDocumentMerger()

    {

    objApp = new ApplicationClass();

    }

    #region打开文件

    private void Open(string tempDoc)

    {

    object objTempDoc = tempDoc;

    object objMissing = System.Reflection.Missing.Value;

    objDocLast = objApp.Documents.Open( ref objTempDoc,    //FileName ref objMissing,   //ConfirmVersions ref objMissing,   //ReadOnly ref objMissing,   //AddToRecentFiles ref objMissing,   //PasswordDocument ref objMissing,   //PasswordTemplate ref objMissing,   //Revert ref objMissing,   //WritePasswordDocument ref objMissing,   //WritePasswordTemplate ref objMissing,   //Format ref objMissing,   //Enconding ref objMissing,   //Visible ref objMissing,   //OpenAndRepair ref objMissing,   //DocumentDirection ref objMissing,   //NoEncodingDialog

    ref objMissing //XMLTransform

    );

    objDocLast.Activate();

    }

    #endregion

    #region保存文件到输出模板

    private void SaveAs(string outDoc)

    {

    object objMissing = System.Reflection.Missing.Value;

    object objOutDoc = outDoc;

    objDocLast.SaveAs( ref objOutDoc,      //FileName ref objMissing,     //FileFormat ref objMissing,     //LockComments ref objMissing,     //PassWord ref objMissing,     //AddToRecentFiles ref objMissing,     //WritePassword ref objMissing,     //ReadOnlyRecommended ref objMissing,     //EmbedTrueTypeFonts ref objMissing,     //SaveNativePictureFormat ref objMissing,     //SaveFormsData ref objMissing,     //SaveAsAOCELetter, ref objMissing,     //Encoding ref objMissing,     //InsertLineBreaks ref objMissing,     //AllowSubstitutions ref objMissing,     //LineEnding

    ref objMissing //AddBiDiMarks

    );

    }

   #endregion

    #region循环合并多个文件(复制合并重复的文件)

    /// <summary>

    ///循环合并多个文件(复制合并重复的文件)

    /// </summary>

    /// <param name="tempDoc">模板文件</param>

    /// <param name="arrCopies">需要合并的文件</param>

    /// <param name="outDoc">合并后的输出文件</param>

    public void CopyMerge(string tempDoc, string[] arrCopies, string outDoc)

    {

    object objMissing = Missing.Value;

    object objFalse = false;

    object objTarget = WdMergeTarget.wdMergeTargetSelected; object objUseFormatFrom = WdUseFormattingFrom.wdFormattingFromSelected;

    try

    {

    //打开模板文件

    Open(tempDoc);

    foreach (string strCopy in arrCopies)

    {

    objDocLast.Merge( strCopy,                //FileName ref objTarget,          //MergeTarget ref objMissing,         //DetectFormatChanges ref objUseFormatFrom,   //UseFormattingFrom

    ref objMissing //AddToRecentFiles

    );

    objDocBeforeLast = objDocLast;

    objDocLast = objApp.ActiveDocument; if (objDocBeforeLast != null)

    {

    objDocBeforeLast.Close( ref objFalse,     //SaveChanges ref objMissing,   //OriginalFormat

    ref objMissing //RouteDocument

    );

    }

    }

    //保存到输出文件

    SaveAs(outDoc);

    foreach (Document objDocument in objApp.Documents)

    {

    objDocument.Close( ref objFalse,     //SaveChanges ref objMissing,   //OriginalFormat

    ref objMissing //RouteDocument

    );

    }

    }

    finally

    {

    objApp.Quit( ref objMissing,     //SaveChanges ref objMissing,     //OriginalFormat

    ref objMissing //RoutDocument

    );

    objApp = null;

    }

    }

    /// <summary>

    ///循环合并多个文件(复制合并重复的文件)

    /// </summary>

    /// <param name="tempDoc">模板文件</param>

    /// <param name="arrCopies">需要合并的文件</param>

    /// <param name="outDoc">合并后的输出文件</param>

    public void CopyMerge(string tempDoc, string strCopyFolder, string outDoc)

    {

    string[] arrFiles = Directory.GetFiles(strCopyFolder); CopyMerge(tempDoc, arrFiles, outDoc);

    }

    #endregion

   #region循环合并多个文件(插入合并文件)

    /// <summary>

    ///循环合并多个文件(插入合并文件)

    /// </summary>

    /// <param name="tempDoc">模板文件</param>

    /// <param name="arrCopies">需要合并的文件</param>

    /// <param name="outDoc">合并后的输出文件</param>

    public void InsertMerge(string tempDoc, string[] arrCopies, string outDoc)

    {

    object objMissing = Missing.Value;

    object objFalse = false;

    object confirmConversion = false;

    object link = false;

    object attachment = false;

    try

    {

    //打开模板文件

    Open(tempDoc);

    foreach (string strCopy in arrCopies)

    {

    objApp.Selection.InsertFile( strCopy, ref objMissing, ref confirmConversion, ref link,

    ref attachment

    );

    }

    //保存到输出文件

    SaveAs(outDoc);

    foreach (Document objDocument in objApp.Documents)

    {

    objDocument.Close( ref objFalse,     //SaveChanges ref objMissing,   //OriginalFormat

    ref objMissing //RouteDocument

    );

    }

    }

    finally

    {

    objApp.Quit( ref objMissing,     //SaveChanges ref objMissing,     //OriginalFormat

    ref objMissing //RoutDocument

    );

    objApp = null;

    }

    }

    /// <summary>

    ///循环合并多个文件(插入合并文件)

    /// </summary>

    /// <param name="tempDoc">模板文件</param>

    /// <param name="arrCopies">需要合并的文件</param>

    /// <param name="outDoc">合并后的输出文件</param>

    public void InsertMerge(string tempDoc, string strCopyFolder, string outDoc)

    {

    string[] arrFiles = Directory.GetFiles(strCopyFolder); InsertMerge(tempDoc, arrFiles, outDoc);

    }

    #endregion

    }

    }


若有疑问请拨打北大青鸟咨询热线:010-80146691或点击免费在线咨询!
  • xml地图 网站地图 招生简章 合作企业 学员项目 联系我们
  • 关闭窗口