189 8069 5689

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

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  {      ///       /// Word文档合并类      ///       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 循环合并多个文件(复制合并重复的文件)          ///           /// 循环合并多个文件(复制合并重复的文件)          ///           /// 模板文件          /// 需要合并的文件          /// 合并后的输出文件          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;              }          }          ///           /// 循环合并多个文件(复制合并重复的文件)          ///           /// 模板文件          /// 需要合并的文件          /// 合并后的输出文件          public void CopyMerge(string tempDoc, string strCopyFolder, string outDoc)          {              string[] arrFiles = Directory.GetFiles(strCopyFolder);              CopyMerge(tempDoc, arrFiles, outDoc);          }          #endregion           #region 循环合并多个文件(插入合并文件)          ///           /// 循环合并多个文件(插入合并文件)          ///           /// 模板文件          /// 需要合并的文件          /// 合并后的输出文件          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;              }          }          ///           /// 循环合并多个文件(插入合并文件)          ///           /// 模板文件          /// 需要合并的文件          /// 合并后的输出文件          public void InsertMerge(string tempDoc, string strCopyFolder, string outDoc)          {              string[] arrFiles = Directory.GetFiles(strCopyFolder);              InsertMerge(tempDoc, arrFiles, outDoc);          }          #endregion      }  }

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


分享标题:C#中怎么合并多个WORD文档
标题链接:http://cdxtjz.cn/article/ghdgeo.html

其他资讯