今天因为客户需要,需要将多个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
- {
- ///
- /// Word文档合并类
- ///
- 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 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;
- }
- }
- ///
- /// 循环合并多个文件(插入合并文件)
- ///
- /// 模板文件
- /// 需要合并的文件
- /// 合并后的输出文件
- public void InsertMerge(string tempDoc, string strCopyFolder, string outDoc)
- {
- string[] arrFiles = Directory.GetFiles(strCopyFolder);
- InsertMerge(tempDoc, arrFiles, outDoc);
- }
- #endregion
- }
- }
链接:http://www.cnblogs.com/madengwei/archive/2009/09/26/1574570.html
网站名称:浅析C#合并多个WORD文档的具体实现方法
地址分享:http://www.shufengxianlan.com/qtweb/news40/374040.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联