彩票走势图

Word控件Spire.Doc 【文档操作】教程(十一):如何在C#中按分页符拆分word文档

翻译|使用教程|编辑:胡涛|2022-04-13 13:46:08.397|阅读 219 次

概述:在本文中,我们将学习如何使用 Spire.Doc for .NET 按分页符拆分 word 文档。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

借助 Spire.Doc for .NET,我们不仅可以按节拆分 word 文档,还可以按分页符拆分。我们已经介绍了如何通过分节符将一个 Word 文档拆分为多个文档。在本文中,我们将学习如何使用 Spire.Doc for .NET 按分页符拆分 word 文档。

Spire.Doc for.NET 最新下载

请查看以下原始word文档的屏幕截图,该文档在第一页和第二页的末尾有两个分页符。

如何在C#中按分页符拆分word文档

现在参考以下详细步骤将其按分页符拆分为 3 个单独的文档。

第 1步创建一个word文档并加载原始word文档。

Document original = new Document();
original.LoadFromFile("New Zealand.docx");

第 2 步创建一个新的 Word 文档并在其中添加一个部分。

Document newWord = new Document();
Section section = newWord.AddSection();

第 3 步将原word文档按照分页符拆分成单独的文档。

int index = 0;
//traverse through all sections of original document
foreach (Section sec in original.Sections)
{
//traverse through all body child objects of each section
foreach (DocumentObject obj in sec.Body.ChildObjects)
{
if (obj is Paragraph)


{
Paragraph para = obj as Paragraph;
//add paragraph object in original section into section of new document
section.Body.ChildObjects.Add(para.Clone());
foreach (DocumentObject parobj in para.ChildObjects)
{
if (parobj is Break && (parobj as Break).BreakType == BreakType.PageBreak)
{
//get the index of page break in paragraph
int i = para.ChildObjects.IndexOf(parobj);
//remove the page break from its paragraph
section.Body.LastParagraph.ChildObjects.RemoveAt(i);

//save the new document to a .docx file.
newWord.SaveToFile(String.Format("result/out-{0}.docx", index), FileFormat.Docx);
index++;

//create a new document
newWord = new Document();
//add a section for document
section = newWord.AddSection();
//add paragraph object in original section into section of new document
section.Body.ChildObjects.Add(para.Clone());
if (section.Paragraphs[0].ChildObjects.Count == 0)
{
//remove the first blank paragraph
section.Body.ChildObjects.RemoveAt(0);
}
else
{
//remove the child objects before the page break
while (i >= 0)
{
section.Paragraphs[0].ChildObjects.RemoveAt(i);
i--;
}
}
}
}
}
if (obj is Table)
{
//add table object in original section into section of new document
section.Body.ChildObjects.Add(obj.Clone());
}
}
}
//save to a .docx file
newWord.SaveToFile(String.Format("result/out-{0}.docx", index), FileFormat.Docx);

输出

如何在C#中按分页符拆分word文档

完整代码

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

namespace Split_Word_Document_by_Page_Break
{
class Program
{
static void Main(string[] args)
{
Document original = new Document();
original.LoadFromFile("New Zealand.docx");
Document newWord = new Document();
Section section = newWord.AddSection();

int index = 0;
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("result/out-{0}.docx", index), FileFormat.Docx);
index++;

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("result/out-{0}.docx", index), FileFormat.Docx);
}
}
}

欢迎下载|体验更多E-iceblue产品

如需获取更多产品相关信息请咨询  

aspose22.1最新版



标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP