码迷,mamicode.com
首页 > Windows程序 > 详细

C# 如何处理Word文档分页——插入、删除、阻止分页

时间:2018-06-28 16:00:19      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:word   mfile   text   cross   测试文件   .section   break   water   cti   

本篇文章将介绍C#编程如何来处理Word分页的方法。操作Word中的分页这里分为几种情况的来介绍:

  1. 插入分页
    1.1在指定段落末尾插入分页
    1.2 在指定字符后插入分页
  2. 删除分页
    3.阻止表格分页

处理工具Spire.Doc for .NET 6.1
安装该类库后,在程序中引用Spire.Doc.dll文件即可(如下图),dll文件在安装路径下Bin文件夹中获取。
技术分享图片

【示例1】插入分页(在指定段落末尾插入分页)

【C#】

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

namespace InsertPageBreak_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实例,加载文件
            Document document = new Document();
            document.LoadFromFile("test.docx");

            //在指定段落末尾,插入分页
            document.Sections[0].Paragraphs[1].AppendBreak(BreakType.PageBreak);

            //保存文件并打开
            document.SaveToFile("PageBreak.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("PageBreak.docx");

        }
    }
}

调试运行程序,生成文档。
分页前后效果对比添:
分页前
技术分享图片

分页后
技术分享图片

【示例2】插入分页(在指定字符后插入分页)

C#

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

namespace InsertPagebreak1_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建实例,加载文件
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //查找需要在其后插入分页的字符
            TextSelection[] selections = doc.FindAllString("guests", true, true);
            //遍历文档,插入分页
            foreach (TextSelection ts in selections)
            {
                TextRange range = ts.GetAsOneRange();
                Paragraph paragraph = range.OwnerParagraph;
                int index = paragraph.ChildObjects.IndexOf(range);
                Break pageBreak = new Break(doc, BreakType.PageBreak);
                paragraph.ChildObjects.Insert(index + 1, pageBreak);
            }

            //保存并打开文档
            doc.SaveToFile("Break.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("Break.docx");

        }
    }
}

测试结果:
技术分享图片

【示例3】删除分页

C#

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

namespace RemovePagebreak_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            {
                //实例化Document类,加载文件
                Document document = new Document();
                document.LoadFromFile("sample.docx", FileFormat.Docx);

                //遍历第一节中的所有段落,移除分页
                for (int j = 0; j < document.Sections[0].Paragraphs.Count; j++)
                {
                    Paragraph p = document.Sections[0].Paragraphs[j];
                    for (int i = 0; i < p.ChildObjects.Count; i++)
                    {
                        DocumentObject obj = p.ChildObjects[i];
                        if (obj.DocumentObjectType == DocumentObjectType.Break)
                        {
                            Break b = obj as Break;
                            p.ChildObjects.Remove(b);
                        }
                    }
                }
                //保存并打开文件
                document.SaveToFile("result.docx", FileFormat.Docx);
                System.Diagnostics.Process.Start("result.docx");
            }
        }
    }
}

测试效果对比:
原文档:
技术分享图片
技术分享图片

删除分页后:
技术分享图片

【示例4】阻止Word表格分页

测试文件如下:
技术分享图片

方法一:将跨页的表格重新定位放置在同一个页面上
C#

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

namespace PreventPagebreak_Table__Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document类实例,加载文档
            Document doc = new Document("test.docx");

            //获取表格
            Table table = doc.Sections[0].Tables[0] as Table;

            //设置表格的段落位置,保持表格在同一页
            foreach (TableRow row in table.Rows)
            {
                foreach (TableCell cell in row.Cells)
                {
                    foreach (Paragraph p in cell.Paragraphs)
                    {
                        p.Format.KeepFollow = true;
                    }
                }
            }

            //保存文件并打开
            doc.SaveToFile("result.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("result.docx"); 
        }
    }
}

测试效果:
技术分享图片

方法二:阻止同一行数据被强制分页
C#

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

namespace PreventPagebreak_Table__Doc
{
    class Program
    {
        static void Main(string[] args)
        {
          //创建实例,加载文件
            Document doc = new Document("test.docx");

            //获取指定表格
            Table table = doc.Sections[0].Tables[0] as Table;

            //设置表格分页属性
            table.TableFormat.IsBreakAcrossPages = false;

            //保存并打开文件
            doc.SaveToFile("output.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("output.docx");
        }
    }
}

测试效果:
技术分享图片

以上全部是本次关于如何操作Word中的分页符的方法。如需转载,请注明出处。

C# 如何处理Word文档分页——插入、删除、阻止分页

标签:word   mfile   text   cross   测试文件   .section   break   water   cti   

原文地址:http://blog.51cto.com/eiceblue/2133721

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!