C#中怎么合并多个WORD文档

发布时间:2021-07-08 15:36:47 作者:Leah
来源:亿速云 阅读:453

C#中怎么合并多个WORD文档,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. C# 如何合并、拆分Word文档
  2. C#中如何设置Word文档背景

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

word

上一篇:C#中怎么利用Specification模式定制业务逻辑

下一篇:C#中怎么实现同步调用和异步调用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》