加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 05:51:18 所属栏目:百科 来源:网络整理
导读:本篇章节讲解C#实现合并多个word文档的方法,是非常具有实用价值的技巧。供大家参考研究。 具体实现方法如下: using System;using System.Collections.Generic;using System.Linq;using System.Web;using Microsoft.Office.Interop.Word;using Syst

本篇章节讲解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,//FileFormat 
      ref objMissing,//LockComments 
      ref objMissing,//PassWord 
      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 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 confirmConversion,ref link,ref attachment
          );
        }
        //保存到输出文件 
        SaveAs(outDoc);
        foreach (Document objDocument in objApp.Documents)
        {
          objDocument.Close(
          ref objFalse,//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 outDoc)
    {
      string[] arrFiles = Directory.GetFiles(strCopyFolder);
      InsertMerge(tempDoc,outDoc);
    }
    #endregion
  }
}

相信本文所述对大家的C#程序设计有一定的借鉴价值。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读