`
61party
  • 浏览: 1100982 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

用C#编程合并多个WORD文档

阅读更多

今天因为客户需要,需要将多个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
{
/// <summary>
/// Word文档合并类
/// </summary>
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
}
}

分享到:
评论

相关推荐

    word文档合并C#实现

    总结起来,这个C#程序提供了一个实用的工具,用于合并多个Word文档,并展示了如何在C#中进行基础的Word文档读写操作。通过学习和理解这个程序,开发者能够掌握如何利用.NET Framework中的Office Interop服务来处理...

    C#编程实现动态生成Word文档

    本主题聚焦于如何利用C#编程实现动态生成Word文档。动态生成Word文档的能力对于许多应用程序至关重要,例如报告自动化、数据导出或自定义模板生成等场景。 在C#中,我们可以借助Microsoft的Open XML SDK或者第三方...

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

    在C#编程中,合并多个Word文档是一项常见的需求,特别是在自动化文档处理或报告生成的场景中。本篇文章将详细介绍如何使用C#实现这一功能,主要依赖于Microsoft Office Interop库来与Word应用程序进行交互。 首先,...

    C# HtmlToWord 将HTML文件转换成word文档

    本篇文章将详细探讨如何利用C#编程语言实现从HTML文件批量转换为Word文档,同时确保本地图片和链接的本地化,使得转换后的Word文档能够完整保留HTML的样式和内容。 首先,我们需要了解HTML和Word之间的主要差异。...

    一个用C#来合并WORD文档的程序代码

    本示例聚焦于如何使用C#合并多个Microsoft Word文档。这在处理大量文档或者需要汇总信息的情景下非常实用,比如报告生成、数据分析等。 首先,要实现这个功能,你需要使用Microsoft Office Interop库,它允许C#代码...

    c#打开word文档及读取word文档

    在C#编程环境中,操作Microsoft Word文档是一项常见的任务,包括打开Word文档以及读取文档内容。这涉及到.NET Framework中的Microsoft.Office.Interop.Word库,它允许C#应用程序与Word进行交互。以下是一些关于如何...

    C#中PDF文件转WORD文件(完整版)

    在C#编程环境中,将PDF文件转换为Word文档是一项常见的任务,这可能涉及到文本提取、格式保留以及图像处理等多个方面。下面将详细讲解如何在C#中实现这一过程,包括必要的库、步骤以及可能遇到的问题。 1. **库的...

    C#中PDF文件转WORD文件--完整版)

    在C#编程环境中,将PDF文件转换为Word文档是一项常见的任务,这可能涉及到文本和图像的提取、格式的保持以及布局的复原等复杂过程。本文将深入探讨如何使用C#来实现这一功能,主要涉及的技术包括PDF阅读库、Word处理...

    c# word、txt文档文件对比(查重)

    在C#编程环境中,开发人员经常需要处理各种文件操作任务,包括读取、写入以及对比文件内容。本文将深入探讨如何使用C#语言来对比Word文档(.docx)和纯文本文件(.txt)的相似度,实现查重功能。我们将不依赖任何第...

    c#根据word模板生成word文档

    在C#编程环境中,我们可以利用Microsoft.Office.Interop.Word库来实现根据Word模板生成新的Word文档。这个功能在很多业务场景中非常实用,例如批量生成报告、合同等。在本项目中,"c#根据word模板生成word文档"的...

    用C#动态生成Word文档并将数据填入Word表格中

    ### 使用C#动态生成Word文档并将数据填入Word表格中的技术要点 在现代办公环境中,自动化处理文档变得越来越重要。特别是在需要频繁生成报告、发票或其他标准化格式文档的情况下,利用编程语言来实现文档的自动化...

    C# CHtmlToWord 将HTML文件转换成word文档!

    在IT行业中,有时候我们需要将网页内容或HTML文件转换为Word文档格式,以便于编辑、打印或分享。"C# CHtmlToWord 将HTML文件转换成word文档!"这个项目提供了一个解决方案,允许开发者通过C#编程语言实现这一功能,...

    C#中PDF文件转WORD文件完整源码

    在这个场景中,我们将讨论如何使用C#来实现PDF文件转换为Word文档。这个转换过程通常涉及解析PDF内容并重新构建到Word格式,这在需要编辑PDF内容或者与不支持PDF格式的应用程序交互时非常有用。 首先,你需要引入一...

    C#实现word转图片

    综上所述,"C#实现word转图片"涉及到的知识点包括C#编程、Adobe Professional API(尽管不是直接使用)、Ghostscript的集成、进程调用、图像处理、文件I/O、异常处理、多线程编程、设计模式以及服务器部署和配置。...

    c#excel转为word

    在C#编程环境中,将Excel文件转换为Word文档是一项常见的任务,这主要涉及到对两种不同文件格式的理解以及相应的处理库的使用。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解Excel和Word的基本...

    C#合并word文档类

    1. **打开文档**:类可能包含一个方法,用于加载多个Word文档到内存中,这通常涉及到读取文件内容并将其转换为适当的对象模型。 2. **文档合并逻辑**:这是类的核心部分,它会将多个文档的内容整合到一个新文档中。...

    C#的在线编辑word

    本项目名为"C#的在线编辑word",显然是一个使用C#编程语言实现的Web应用程序,允许用户通过网页进行Word文档的操作。 C#是一种面向对象的编程语言,广泛应用于Windows平台和.NET框架,同时也被用在ASP.NET框架中来...

    C#+使用word模板+批量打印例子

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用方面。在这个"C#+使用word模板+批量打印例子"中,...开发者需具备C#编程、Office Interop使用以及数据库操作的知识,才能有效地完成这样的任务。

Global site tag (gtag.js) - Google Analytics