溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-08-06 02:50:03 來源:網(wǎng)絡(luò) 閱讀:1307 作者:E_iceblue 欄目:編程語言

概述

出于方便文檔管理、存儲、傳輸?shù)饶康模覀兂胍獙⒛承┪臋n拆分為多個子文檔,或者將多個文檔合并為一個文檔。在本文中,將介紹對Word文檔進行拆分、合并的方法。下面的示例中將包含以下要點:

  1. 合并Word文檔
    1.1 新建一頁合并到文檔
    1.2 緊接上文合并到文檔
  2. 拆分Word文檔
    2.1 按分節(jié)符拆分
    2.2 按分頁符拆分

所用工具

  • Free Spire.Doc for .NET 6.3
  • Visual Studio

示例操作

一、合并Word文檔
(一)以新建一頁合并到文檔
【C#】

using Spire.Doc;

namespace MergeWord_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建兩個文檔,加載需要合并的文件
            Document doc1 = new Document(@"C:\Users\Administrator\Desktop\TradeNegotiation.docx");
            Document doc2 = new Document(@"C:\Users\Administrator\Desktop\DisputeSettlement.docx");

            //調(diào)用InsertTextFromFile()方法,將文檔2合并到文檔1
            string fileName = @"C:\Users\Administrator\Desktop\DisputeSettlement.docx";
            doc1.InsertTextFromFile(fileName, FileFormat.Docx2013);

            //保存文件
            doc1.SaveToFile("MergedDocument.docx", FileFormat.Docx2013);
        }
    }
}

調(diào)試運行該項目,生成文件,如下圖所示:
C# 如何合并、拆分Word文檔

(二)緊接上文合并到文檔
【C#】

using Spire.Doc;
using Spire.Doc.Documents;

namespace MergeWord2_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建兩個文檔,并加載需要合并的兩個文件
            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,復(fù)制所有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);
        }
    }
}

合并效果:
C# 如何合并、拆分Word文檔

二、拆分Word文檔
(一)按分節(jié)符拆分
【C#】

using Spire.Doc;
using System;

namespace SplitWord_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //創(chuàng)建一個Document類對象,并加載需要拆分的文檔
            Document document = new Document();
            document.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.docx");
            //實例化Document對象 
            Document newWord;
            //遍歷文檔所有section,復(fù)制文檔每個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# 如何合并、拆分Word文檔

(二)按分頁符拆分
【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();
            //根據(jù)分頁來拆分文檔
            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;
                        //復(fù)制并添加原有段落對象到新文檔
                        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,將原文檔段落的子對象復(fù)制到新文檔
                                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文檔

閱讀結(jié)束。
如需轉(zhuǎn)載,請注明出處!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI