`

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# 编写的文件拆分和合并

    本项目是基于C# 2008编译的一个实用工具,专为处理大文件,特别是Word文档和图片文件而设计。它允许用户将大文件拆分为多个小文件,并在需要时将这些小文件合并回原始文件。 首先,我们来看文件拆分的部分。在C#中...

    c#操控word文档

    ### C#操控Word文档知识点详解 #### 一、概述 在C#中,可以通过引用`Microsoft.Office.Interop.Word`命名空间来实现对Word文档的操作。这种方式主要用于自动化Word文档处理任务,如创建新文档、编辑现有文档、添加...

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

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

    Word操作类,包含word拆分

    下面是一个简单的示例,展示如何基于页码拆分Word文档: ```csharp using Microsoft.Office.Interop.Word; // 创建Word应用程序对象 Application word = new Application(); Document doc = word.Documents.Open(...

    C# 操作word 接口方法大全

    在C#编程环境中,操作Microsoft Word文档是一项常见的任务,尤其在自动化报告生成、数据整合或者文档处理中。本文将深入探讨C#与Word交互的接口方法,以及如何利用这些方法来实现诸如添加书签、插入图片、文字、表格...

    C#操作Word表格

    C#操作Word表格是指使用C#语言来操作Microsoft 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文档的第三方控件Xceed.Words.NET.rar

    4. **邮件合并**:邮件合并是Xceed.Words.NET的一个强大特性,它可以将单个Word文档模板与数据源结合,生成大量个性化输出,常用于批量发送信函、发票等。 5. **读取和解析文档**:控件能够读取现有的Word文档,并...

    C# WORD 表格 COM 引用

    此外,还可以调整行高、列宽,合并或拆分单元格,甚至执行更复杂的格式化任务。例如,以下代码会将第一列的宽度设为5厘米: ```csharp table.Columns[1].Width = 5 * 72; // Word的单位是点,1厘米约等于72点 ``` ...

    aspose.word 解析word读取及word转pdf、转html

    Aspose.Word是一款强大的编程库,专门用于处理Microsoft Word文档,包括读取、写入、转换和操作DOC、DOCX格式的文件。它提供了多种API,支持多种编程语言,如Java、.NET、PHP等,使得开发者能够轻松地在应用程序中...

    SpireDll (C#操作WORD、PDF文件)

    此外,它还支持转换Word文档为其他格式,如HTML、PDF等,以及合并、拆分、比较文档等功能。 2. **Spire.License.dll**: 这个库主要用于处理Spire产品的授权问题。在商业应用中,为了合法使用Spire.Doc和Spire.Pdf...

    基于微软的Word操作保留原格式拆分完整示例

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

    将word分页输出

    本话题聚焦于如何利用C#实现“将Word分页输出”,即将Word文档的每一页内容独立保存为多个单独的文档。这个功能对于需要对大量文档进行拆分、归档或者按页面处理的工作场景非常有用。 首先,我们需要了解C#中用于...

    aspose.words操作word 一些关键方法

    你可以创建新表格、合并或拆分单元格、调整列宽和行高、添加或删除行和列、应用样式和格式,甚至执行复杂的计算。这对于处理数据报告、产品目录或者课程大纲等文档非常有用。 4. 分页:在长文档中,分页是必不可少...

    .net aspose.word 组卷

    二、批量拆分Word文档 在Aspose.Word中,拆分文档通常涉及到将一个大型文档分割成多个小文档,每个小文档可能包含原始文档中的一个或多个部分。这个过程可以通过遍历文档的段落或页面来实现。例如,你可以设置一个...

    Aspose excel转pdf、pdf拆分合并

    它可以用来创建、编辑、转换和显示Word文档,也可以用于文本替换、页面布局调整等任务。 3. **Aspose.Pdf**: 这是Aspose工具集中处理PDF文档的核心组件。它提供了丰富的API,支持PDF的创建、阅读、更新和转换。在...

    fileCheck.rar

    首先,让我们详细探讨如何使用C#来拆分Word文档。在处理大型Word文档时,有时我们需要将文档分割成多个小部分,以便管理和编辑。C#中的Microsoft.Office.Interop.Word库提供了与Word交互的能力。通过创建Word应用...

    c#编程规范(Word文档)

    《C#编程规范 2.0》是一份详尽的编程指南,旨在帮助开发者遵循一套标准的编程风格,提升代码的可读性、可维护性和团队协作效率。规范的制定原则首要强调的是清晰性和一致性,这包括但不限于变量、类、方法的命名规则...

    c#文档切割机

    例如,当面对一份过大的PDF或Word文档,阅读和查找特定内容可能会变得困难,而文档切割机则能有效地解决这个问题。它可能采用了流式读取和写入技术,逐行处理原始文档,然后按照预设的大小或页数将其拆分为多个独立...

    C# PDF操作类 PDF

    有时需要将多个PDF文档合并为一个,或者从一个大文档中拆分成多个小文档。PDFSharp和iTextSharp都提供了这样的功能,允许开发者根据需求进行操作。 8. **PDF转HTML**与**HTML转PDF**: 要在Web环境中处理PDF,...

Global site tag (gtag.js) - Google Analytics