知识大全 浅析C#合并多个WORD文档的具体实现方法

Posted 文件

篇首语:没有风暴,船帆只不过是一块破布。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅析C#合并多个WORD文档的具体实现方法相关的知识,希望对你有一定的参考价值。

浅析C#合并多个WORD文档的具体实现方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  今天因为客户需要 需要将多个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     //ReadOnlyRemended

  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

  

cha138/Article/program/ASP/201311/21785

相关参考