合并Word文档可以快速地将多份编辑好的文档合在一起,避免复制粘贴时遗漏内容,以及耗费不必要的时间,同时,也方便了人们阅读或者对其进行再次修改。例如,在我们进行团队作业的时候,每个人都会有不同的分工,此时,每个人都需要完成自己的文档,利用合并文件功能就可以快速地将所有内容集合在一起,方便了对内容的修改。本文将分为以下两部分介绍如何通过C#合并Word文档,并附上VB.NET代码供大家参考。

  • 通过插入完整文件来合并文档
  • 通过克隆内容合并文档

程序环境

本次测试时,在程序中引入Free Spire.Doc for .NET。可通过以下方法引用 Free Spire.Doc.dll文件:

方法1:将 Free Spire.Doc for .NET下载到本地,解压,安装。安装完成后,找到安装路径下BIN文件夹中的 Spire.Doc.dll。然后在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“添加引用”,将本地路径BIN文件夹下的dll文件添加引用至程序。

方法2:通过NuGet安装。可通过以下2种方法安装:

(1)可以在Visual Studio中打开“解决方案资源管理器”,鼠标右键点击“引用”,“管理NuGet包”,然后搜索“Free Spire.Doc”,点击“安装”。等待程序安装完成。

(2)将以下内容复制到PM控制台安装。

Install-Package FreeSpire.Doc -Version 10.8.0

通过插入完整文件来合并文档

通过插入完整文件来合并文档的详细步骤如下:

  • 创建一个Document实例。

  • 使用 Document.LoadFromFile() 方法加载原始 Word 文档。

  • 使用 Document.InsertTextFromFile() 方法将另一个 Word 文档完全插入到原始文档中。

  • 使用 Document.SaveToFile() 方法保存结果文档。

完整代码

C#

using Spire.Doc;

namespace MergeWord
{
class Program
{
static void Main(string[] args)
{
//创建一个Document实例
Document document = new Document(); //加载原始 Word 文档
document.LoadFromFile("文档1.docx", FileFormat.Docx); //插入另一个 Word 文档到原文档中
document.InsertTextFromFile("文档2.docx", FileFormat.Docx); //保存结果文档
document.SaveToFile("合并Word文档.docx", FileFormat.Docx);
}
}
}

VB.NET

Imports Spire.Doc

Namespace MergeWord
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'创建一个Document实例
Dim document As Document = New Document() '加载原始 Word 文档
document.LoadFromFile("文档1.docx", FileFormat.Docx) '插入另一个 Word 文档到原文档中
document.InsertTextFromFile("文档2.docx", FileFormat.Docx) '保存结果文档
document.SaveToFile("合并Word文档.docx", FileFormat.Docx)
End Sub
End Class
End Namespace

效果图

通过克隆内容合并文档

通过克隆内容合并文档的具体步骤如下:

  • 加载两个 Word 文档。

  • 循环遍历第二个文档中的所有节, 然后循环遍历每个节下的子对象,获取特定的子对象,准备插入第一个文档。

  • 使用 Document.LastSection 属性获取第一个文档的最后一个节,然后使用 LastSection.Body.ChildObjects.Add() 方法将子对象添加到第一个文档的最后一个节。

  • 使用 Document.SaveToFile() 方法保存结果文档。

完整代码

C#

using Spire.Doc;

namespace MergeWord
{
class Program
{
static void Main(string[] args)
{
//加载两个 Word 文档
Document doc1 = new Document("文档1.docx");
Document doc2 = new Document("文档2.docx"); //循环遍历第二个文档以获取所有节
foreach (Section section in doc2.Sections)
{ //遍历第二个文档的各个节以获取它们的子对象
foreach (DocumentObject obj in section.Body.ChildObjects)
{ //获取第一个文档的最后一节
Section lastSection = doc1.LastSection; //将所有子对象添加到第一个文档的最后一节
lastSection.Body.ChildObjects.Add(obj.Clone());
}
} //保存结果文档
doc1.SaveToFile("合并文档.docx", FileFormat.Docx);
}
}
}

VB.NET

Imports Spire.Doc

Namespace MergeWord
Friend Class Program
Private Shared Sub Main(ByVal args As String())
'加载两个 Word 文档
Dim doc1 As Document = New Document("文档1.docx")
Dim doc2 As Document = New Document("文档2.docx") '循环遍历第二个文档以获取所有节
For Each section As Section In doc2.Sections '遍历第二个文档的各个节以获取它们的子对象
For Each obj As DocumentObject In section.Body.ChildObjects '获取第一个文档的最后一节
Dim lastSection As Section = doc1.LastSection '将所有子对象添加到第一个文档的最后一节
lastSection.Body.ChildObjects.Add(obj.Clone())
Next
Next '保存结果文档
doc1.SaveToFile("合并文档.docx", FileFormat.Docx)
End Sub
End Class
End Namespace

效果图

——本文完——

最新文章

  1. Java位运算经典实例
  2. 1055. The World's Richest (25)
  3. SpringBoot集成jsp(附源码)+遇到的坑
  4. Android控件_TextView(显示文本框控件)
  5. java基础全套
  6. SQL几个有点偏的语句
  7. 《Programming WPF》翻译 第6章 2.资源与样式
  8. 使用Swift的代理,闭包来封装一个公用协议减少垃圾代码
  9. void与void*详解
  10. C#总结(二)事件Event 介绍总结
  11. Several ports (8005, 8080, 8009)被占用
  12. Word中如何删除目录页的页码
  13. java关于redis的快速配置
  14. Metrics-server插件安装配置
  15. flexbox与grid layout的区别
  16. 【转】chrome devtools protocol——Web 性能自动化
  17. JavaScript实现功能全集
  18. DICOM
  19. PowerShell小技巧 算术表达式求值
  20. 漂亮的Qt控件 QSS代码例子

热门文章

  1. go-fastdfs和配套使用的web页面
  2. Prometheus 通过 consul 分布式集群实现自动服务发现
  3. Java泛型的总结
  4. SpringBoot课程学习(三)
  5. nginx启停shell脚本
  6. html点击a标签弹窗QQ聊天界面
  7. Vue中使用Switch开关用来控制商品的上架与下架情况、同时根据数据库商品的状态反应到前台、前台修改商品状态保存到数据库
  8. 关于Dockerfile的写法
  9. 关于入门深度学习mnist数据集前向计算的记录
  10. ClickHouse(10)ClickHouse合并树MergeTree家族表引擎之ReplacingMergeTree详细解析