栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

C#实现合并多个word文档的方法

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C#实现合并多个word文档的方法

本文实例讲述了C#实现合并多个word文档的方法,是非常具有实用价值的技巧。分享给大家供大家参考。

具体实现方法如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Office.Interop.Word;
using System.Reflection;
using System.IO;
using System.Diagnostics;

namespace driverexam.WordReport
{
  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 /confirm/iConversion,
   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#程序设计有一定的借鉴价值。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/126059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号