概述
出于方便文档管理、存储、传输等目的,我们常会想要将某些文档拆分为多个子文档,或者将多个文档合并为一个文档。在本文中,将介绍对Word文档进行拆分、合并的方法。下面的示例中将包含以下要点:
1. 合并Word文档
1.1 新建一页合并到文档
1.2紧接上文合并到文档
2. 拆分Word文档
2.1 按分节符拆分
2.2 按分页符拆分
所用工具:
- Free Spire.Doc for .NET
- Visual Studio
示例操作:
一、合并Word文档
(一)以新建一页合并到文档
C#
using Spire.Doc; namespace MergeWord_Doc { class Program { static void Main(string[] args) { //创建两个文档,加载需要合并的文件 Document doc1 = new Document(@"C:\Users\Administrator\Desktop\TradeNegotiation.docx"); Document doc2 = new Document(@"C:\Users\Administrator\Desktop\DisputeSettlement.docx"); //调用InsertTextFromFile()方法,将文档2合并到文档1 string fileName = @"C:\Users\Administrator\Desktop\DisputeSettlement.docx"; doc1.InsertTextFromFile(fileName, FileFormat.Docx2013); //保存文件 doc1.SaveToFile("MergedDocument.docx", FileFormat.Docx2013); } } }
调试运行该项目,生成文件,如下图所示:
(二)紧接上文合并到文档
C#
using Spire.Doc; using Spire.Doc.Documents; namespace MergeWord2_Doc { class Program { static void Main(string[] args) { //创建两个文档,并加载需要合并的两个文件 Document doc1 = new Document(@"C:\Users\Administrator\Desktop\TradeNegotiation.docx"); Document doc2 = new Document(@"C:\Users\Administrator\Desktop\DisputeSettlement.docx"); //获取文档1的最后一个Section Section lastSection = doc1.LastSection; //遍历文档2中的所有section,复制所有section到文档1 foreach (Section section in doc2.Sections) { foreach (Paragraph paragraph in section.Paragraphs) { lastSection.Paragraphs.Add(paragraph.Clone() as Paragraph); } } //将合并的文档另存为一个新文档 doc1.SaveToFile("Merged.docx", FileFormat.Docx2013); } } }
合并效果:
二、拆分Word文档
(一)按分节符拆分
C#
using Spire.Doc; using System; namespace SplitWord_Doc { class Program { static void Main(string[] args) { //创建一个Document类对象,并加载需要拆分的文档 Document document = new Document(); document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx"); //实例化Document对象 Document newWord; //遍历文档所有section,复制文档每个section并分别保存到新建的文档,同时将拆分的文档保存到指定路径 for (int i = 0; i < document.Sections.Count; i++) { newWord = new Document(); newWord.Sections.Add(document.Sections[i].Clone()); newWord.SaveToFile(String.Format(@"results\out_{0}.docx", i)); } } } }
效果展示:
(二)按分页符拆分
C#
using System; using Spire.Doc; using Spire.Doc.Documents; namespace Split_Word_Document_by_Page_Break { class Program { static void Main(string[] args) { //实例化一个Document类,加载文档 Document original = new Document(); original.LoadFromFile(@"C:\Users\Administrator\Desktop\test.docx"); //实例化Document类对象,并添加section Document newWord = new Document(); Section section = newWord.AddSection(); //根据分页来拆分文档 int index = 0; //遍历文档所有section foreach (Section sec in original.Sections) { //遍历文档所有子对象 foreach (DocumentObject obj in sec.Body.ChildObjects) { if (obj is Paragraph) { Paragraph para = obj as Paragraph; //复制并添加原有段落对象到新文档 section.Body.ChildObjects.Add(para.Clone()); //遍历所有段落子对象 foreach (DocumentObject parobj in para.ChildObjects) { if (parobj is Break && (parobj as Break).BreakType == BreakType.PageBreak) { //获取段落分页并移除,保存新文档到文件夹 int i = para.ChildObjects.IndexOf(parobj); section.Body.LastParagraph.ChildObjects.RemoveAt(i); newWord.SaveToFile(String.Format("results/out-{0}.docx", index), FileFormat.Docx); index++; //实例化Document类对象,添加section,将原文档段落的子对象复制到新文档 newWord = new Document(); section = newWord.AddSection(); section.Body.ChildObjects.Add(para.Clone()); if (section.Paragraphs[0].ChildObjects.Count == 0) { //移除第一个空白段落 section.Body.ChildObjects.RemoveAt(0); } else { //删除分页符前的子对象 while (i >= 0) { section.Paragraphs[0].ChildObjects.RemoveAt(i); i--; } } } } } //若对象为表格,则添加表格对象到新文档 if (obj is Table) { section.Body.ChildObjects.Add(obj.Clone()); } } } //拆分后的新文档保存至指定文档 newWord.SaveToFile(String.Format("results/out-{0}.docx", index), FileFormat.Docx); } } }
拆分效果:
如需转载,请注明出处!
相关推荐
C#实现通过模板自动创建Word文档的方法,详细介绍了如何插入书签,再通过书签插入文字,图片,表格等等。付有详细代码。
1.1 Word初始 2 1.2 新建 2 1.3 打开 2 1.4 保存 2 1.5 不保存 2 1.6 关闭组件 2 2. 文档操作 3 2.1 文本范围 3 2.2 复制粘贴 3 2.3 字体 3 2.4 段落 4 2.5 标题 5 2.6 编辑 5 2.7分页 6 3. 表格 6 3.1 新建表 6 3.2...
将一个Word文档分割成多个文档,并且保留源文档格式不变。 操作原理是,打开需要操作的文档,把不需要的页面删除掉, 然后另存为文档,如此反复操作就可取出所有页数。 项目已编译好可直接运行学习 基于微软提供的...
第三方控件Xceed.Words.NET. v1.0.0.22 是完全免费的,而且对一般的操作功能足够,而且还有源码 含帮助文档。正常使用,完全满足需要
主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、...C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画处理技术、音频与视频控制...
这个控件能支持的功能十分全面,例如文档安全性设置(电子签名),提取 PDF 文本、附件、图片,PDF 合并和拆分,更新 Metadata,设置 Section,绘制图形、插入图片、表格制作和加工、导入数据等等。除此以外,Spire....
用于.Net的Cloud SDK封装了Aspose.Words REST API,... 拆分和合并Word文档。 访问Word文档元数据。 查找并替换文本。 添加和删除水印和保护。 对文档对象模型的读写访问。 21.3版中的增强功能 添加了“ Update
115 <br>0192 如何获取“我的文档”系统文件夹路径 115 <br>0193 如何获取应用程序当前执行的路径 116 <br>0194 如何获取当前操作系统的信息 116 <br>0195 如何实现基本数据类型随意转换 116...
包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net的demo。 ACReport简介 Anycell Report(简称ACReport)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就...
在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些...
在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些...
包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net的demo。 ACReport简介 Anycell Report(简称ACReport)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就...
包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net和WEB下的demo。 ACReport简介 Anycell Report(简称AC Report)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表...
在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些...
将一个Word或PowerPoint文件拆分(切碎)为多个文件,然后将多个Word / PowerPoint文件组合为一个文件。 从Excel文档中提取数据。 使用正则表达式搜索和替换Word / PowerPoint中的内容。 在Word / PowerPoint...
的服务,可以轻松地将文档转换、合并、水印、保护和光学字符识别 (OCR) 添加到大多数编程语言、操作系统和开发平台。 此服务也可作为传统的“内部部署”解决方案提供,有关更多详细信息,请参阅 。 也有单独的。 ...