知识大全 浅析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

相关参考

知识大全 C#打开WORD文档内容并显示

C#打开WORD文档内容并显示  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  C#打开WORD文

知识大全 C#编程实现动态生成Word文档

C#编程实现动态生成Word文档  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  如何用C#编程实

知识大全 用C#在Word文档中搜索文本

用C#在Word文档中搜索文本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在word应用程序

知识大全 C#操作Word文档(Office 2007)

C#操作Word文档(Office2007)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nbs

知识大全 C#合并多个结构相同的DataTable

C#合并多个结构相同的DataTable  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //&l

在使用Word2010进行文字编辑时,下列叙述错误的是

在使用Word2010进行文字编辑时,下列叙述错误的是_____。A、允许同时打开多个文档B、可将正在编辑的文档另存为一个纯文本文件C、使用“打开”命令可以打开一个已存在的文档D、打印预览文档时,打印

知识大全 JSP生成WORD文档,EXCEL文档,PDF文档

JSP生成WORD文档,EXCEL文档,PDF文档  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!l

知识大全 word2003 为何只能打开一个文档

word2003为何只能打开一个文档?打开新的文档后原先打开的为何文档窗口就没了工具--选项--视图--显示,启动任务窗格,去勾,任务栏中的窗口,勾选wps能打开word2003文档吗可以的,wps必

知识大全 把网页生成word文档并提供下载

  在php中如何把中的内容生成到word文档中  php把中的内容生成到word文档中时不居中显示问题即会默认按照web视图进行显示  php把中的内容生成到word文档中时相关样式不兼容问题  正

知识大全 word中图形和表格怎么组合在一起?

word中图形和表格怎么组合在一起?组合不了,除非把表格转成图片:选中表格——剪切——粘贴——选择性粘贴——图片这样就可以组合了。word怎么将多个图形组合在一起在Word2007文档中使用自选图形工