`

C# 如何合并、拆分Word文档

阅读更多

概述

出于方便文档管理、存储、传输等目的,我们常会想要将某些文档拆分为多个子文档,或者将多个文档合并为一个文档。在本文中,将介绍对Word文档进行拆分、合并的方法。下面的示例中将包含以下要点:

1. 合并Word文档

  1.1 新建一页合并到文档

  1.2紧接上文合并到文档

2. 拆分Word文档

  2.1 按分节符拆分

2.2 按分页符拆分

 

 

所用工具:

 

示例操作:

一、合并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);
        }
    }
}

 

拆分效果:



 

阅读结束。

 

如需转载,请注明出处!

  • 大小: 20.6 KB
  • 大小: 103.9 KB
  • 大小: 59.3 KB
  • 大小: 57 KB
0
0
分享到:
评论

相关推荐

    C#实现通过模板自动创建Word文档的方法

    C#实现通过模板自动创建Word文档的方法,详细介绍了如何插入书签,再通过书签插入文字,图片,表格等等。付有详细代码。

    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操作保留原格式拆分完整示例

    将一个Word文档分割成多个文档,并且保留源文档格式不变。 操作原理是,打开需要操作的文档,把不需要的页面删除掉, 然后另存为文档,如此反复操作就可取出所有页数。 项目已编译好可直接运行学习 基于微软提供的...

    操作WORD文档的第三方控件Xceed.Words.NET.rar

    第三方控件Xceed.Words.NET. v1.0.0.22 是完全免费的,而且对一般的操作功能足够,而且还有源码 含帮助文档。正常使用,完全满足需要

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、...C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动画处理技术、音频与视频控制...

    免费版.NET PDF组件_Free Spire.PDF for .NET 4.3

    这个控件能支持的功能十分全面,例如文档安全性设置(电子签名),提取 PDF 文本、附件、图片,PDF 合并和拆分,更新 Metadata,设置 Section,绘制图形、插入图片、表格制作和加工、导入数据等等。除此以外,Spire....

    aspose-words-cloud-dotnet:.NET库,用于与Aspose.Words Cloud API通信

    用于.Net的Cloud SDK封装了Aspose.Words REST API,... 拆分和合并Word文档。 访问Word文档元数据。 查找并替换文本。 添加和删​​除水印和保护。 对文档对象模型的读写访问。 21.3版中的增强功能 添加了“ Update

    C#编程经验技巧宝典

    115 &lt;br&gt;0192 如何获取“我的文档”系统文件夹路径 115 &lt;br&gt;0193 如何获取应用程序当前执行的路径 116 &lt;br&gt;0194 如何获取当前操作系统的信息 116 &lt;br&gt;0195 如何实现基本数据类型随意转换 116...

    ACReport中国式报表组件2010(Ver2.2)(含文档)

    包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net的demo。 ACReport简介 Anycell Report(简称ACReport)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就...

    Anycell Report 中国式报表控件2011 2.45.008.rar

    在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。  AC Report的一些...

    ACReport中国式报表控件2011(Ver2.42)

    在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些...

    ACReport中国式报表控件2010(Ver2.25)

    包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net的demo。 ACReport简介 Anycell Report(简称ACReport)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表工具之一。就...

    ACReport中国式报表控件2011(Ver2.3)

    包含使用和开发接口文档,及Delphi、VB、VC++、C#.net、VB.net和WEB下的demo。 ACReport简介 Anycell Report(简称AC Report)是一款中国式报表组件,是国内最早的基于表格,支持图文混排、公式和脚本的中国式报表...

    ACReport中国式报表控件2011(Ver2.45)

    在制作复杂的中国式报表时可以避免很多不必要的合并拆分操作,制作表格更加方便和随心所欲,并且省时省力。AC Report单元格支持多种丰富的形态,例如格式化文本、图片、图表、条码、OLE容器等。 AC Report的一些...

    Open-XML-SDK:Microsoft开放的XML SDK

    将一个Word或PowerPoint文件拆分(切碎)为多个文件,然后将多个Word / PowerPoint文件组合为一个文件。 从Excel文档中提取数据。 使用正则表达式搜索和替换Word / PowerPoint中的内容。 在Word / PowerPoint...

    PDF文件JAVA去水印源码-PDF-Converter-Services-Online:使用基于REST的云服务转换、合并、水印、安全和OC

    的服务,可以轻松地将文档转换、合并、水印、保护和光学字符识别 (OCR) 添加到大多数编程语言、操作系统和开发平台。 此服务也可作为传统的“内部部署”解决方案提供,有关更多详细信息,请参阅 。 也有单独的。 ...

Global site tag (gtag.js) - Google Analytics