当前位置: 移动技术网 > IT编程>开发语言>c# > C#实现合并多个word文档的方法

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

2019年07月18日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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 循环合并多个文件(复制合并重复的文件)
    /// <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
  }
}

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网