当前位置:K88软件开发文章中心编程语言.NET.NET01 → 文章内容

C#中把多个Word文档合并为一个文档的方法

减小字体 增大字体 作者:佚名  来源:翔宇亭IT乐园  发布时间:2018-12-31 11:50:39

:2010-08-04 20:12:00

有时我们需要将多个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    

:2010-08-04 20:12:00

#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

上一页  

:2010-08-04 20:12:00

    #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

    );

    }

  }

上一页  

:2010-08-04 20:12:00

  //保存到输出文件

  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

上一页  

:2010-08-04 20:12:00

  #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>

上一页  

:2010-08-04 20:12:00

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

   /// </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

  }

  }


上一页  [1] [2] [3] [4] [5] [6] 


C#中把多个Word文档合并为一个文档的方法