热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

由于客户需要,需要将多个WORD文档合并成为一个WORD文档。其中,对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

  }

  }
http://www.qqread.com/csharp/p494663.html


 


推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了如何将CIM_DateTime解析为.Net DateTime,并分享了解析过程中可能遇到的问题和解决方法。通过使用DateTime.ParseExact方法和适当的格式字符串,可以成功解析CIM_DateTime字符串。同时还提供了关于WMI和字符串格式的相关信息。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了机器学习手册中关于日期和时区操作的重要性以及其在实际应用中的作用。文章以一个故事为背景,描述了学童们面对老先生的教导时的反应,以及上官如在这个过程中的表现。同时,文章也提到了顾慎为对上官如的恨意以及他们之间的矛盾源于早年的结局。最后,文章强调了日期和时区操作在机器学习中的重要性,并指出了其在实际应用中的作用和意义。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
author-avatar
日月星辰淡定鍀好男孩_933
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有