多语言展示
当前在线:1555今日阅读:155今日分享:35

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

出于方便文档管理、存储、传输等目的,我们常会想要将某些文档进行拆分或者合并。在本文中,将介绍C#合并、拆分方法。
工具/原料

Free Spire.Doc for .NET(社区版)

合并Word文档
1

(一)以新建一页合并到文档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);        }    }}

2

(二)紧接上文合并到文档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文档
1

(一)按分节符拆分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));            }         }    }}

2

(二)按分页符拆分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);        }    }}

注意事项

使用该组件需要先进行安装,完成后在项目程序中添加引用Spire.Doc.dll,并添加到命名空间。

推荐信息