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#程序设计有一定的借鉴价值。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |