C# 操作Word页眉页脚——奇偶页/首页不同、不连续设置页码、复制页眉页脚、锁定页眉页脚、删除页眉

?本文是对Word页眉页脚的操作方法的进一步的阐述。在“C# 添加Word页眉页脚、页码”一文中,介绍了添加简单页眉页脚的方法,该文中的方法可满足于大多数的页眉页脚添加要求,但是对于比较复杂一点的文档,对页眉页脚的添加要求比较严格的,如需要设置奇、偶页的页眉页脚不同、首页页眉页脚不同、设置页码时需要对不同章节的内容设置不同页码、对包含重要信息的页眉页脚需要设置编辑权限、相同性质的文档需要复制指定页眉页脚等等操作,则可以参考本文中的方法。
?鉴于此,本文就以上操作要求分以下几个示例要点来进行:

  • 设置Word奇偶页页眉页脚不同
  • 设置Word首页页眉页脚不同
  • 不连续设置页码(即对不同章节的内容设置不同页码)
  • 复制页眉页脚
  • 锁定页眉页脚
  • 删除页眉页脚
    使用工具:Free Spire.Doc for .NET(社区版)
    注:编程时注意在相应程序中添加引用Spire.Doc.dll,dll文件可在安装路径下的Bin文件夹中获取。

    C#代码示例

    【示例1】设置Word奇偶页页眉页脚不同

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace HeadersFootersForOddAndEvenPages
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document类,并加载测试文档
            Document document = new Document();
            document.LoadFromFile("test.docx");

            //获取指定节,并设置页眉页脚奇偶页不同的属性为true
            Section section = document.Sections[0];
            section.PageSetup.DifferentOddAndEvenPagesHeaderFooter = true;

            //设置奇偶数页的页脚
            Paragraph P1 = section.HeadersFooters.EvenFooter.AddParagraph();
            TextRange EF = P1.AppendText("偶数页页脚");
            EF.CharacterFormat.FontName = "Calibri";
            EF.CharacterFormat.FontSize = 12;
            EF.CharacterFormat.TextColor = Color.Green;
            EF.CharacterFormat.Bold = true;
            P1.Format.HorizontalAlignment = HorizontalAlignment.Right;
            Paragraph P2 = section.HeadersFooters.OddFooter.AddParagraph();
            TextRange OF = P2.AppendText("奇数页页脚");
            P2.Format.HorizontalAlignment = HorizontalAlignment.Left ;
            OF.CharacterFormat.FontName = "Calibri";
            OF.CharacterFormat.FontSize = 12;
            OF.CharacterFormat.Bold = true;
            OF.CharacterFormat.TextColor = Color.Blue;

            //设置奇偶数页的页眉
            Paragraph P3 = section.HeadersFooters.OddHeader.AddParagraph();
            TextRange OH = P3.AppendText("奇数页页眉");
            P3.Format.HorizontalAlignment = HorizontalAlignment.Left;
            OH.CharacterFormat.FontName = "Calibri";
            OH.CharacterFormat.FontSize = 12;
            OH.CharacterFormat.Bold = true;
            OH.CharacterFormat.TextColor = Color.Blue;
            Paragraph P4 = section.HeadersFooters.EvenHeader.AddParagraph();
            TextRange EH = P4.AppendText("偶数页页眉");
            P4.Format.HorizontalAlignment = HorizontalAlignment.Right;
            EH.CharacterFormat.FontName = "Calibri";
            EH.CharacterFormat.FontSize = 12;
            EH.CharacterFormat.Bold = true;
            EH.CharacterFormat.TextColor = Color.Green;

            //保存文档
            document.SaveToFile("result.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("result.docx");
        }
    }
}

奇偶页页眉页脚不同设置效果:

【示例2】设置Word首页页眉页脚不同

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Doc;
using Spire.Doc.Documents;
using Spire.Doc.Fields;
using System.Drawing;

namespace HeaderFootersDifferentFromFirstPage
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document类的对象,并加载测试文档
            Document document = new Document();
            document.LoadFromFile("test.docx");

            //获取指定节,并设置页眉页脚首页不同属性为true
            Section section = document.Sections[0];
            section.PageSetup.DifferentFirstPageHeaderFooter = true;

            //加载图片添加到首页页眉
            Paragraph paragraph1 = section.HeadersFooters.FirstPageHeader.AddParagraph();
            paragraph1.Format.HorizontalAlignment = HorizontalAlignment.Left;
            DocPicture headerimage = paragraph1.AppendPicture(Image.FromFile("2.png"));
            //添加文字到首页页脚
            Paragraph paragraph2 = section.HeadersFooters.FirstPageFooter.AddParagraph();
            paragraph2.Format.HorizontalAlignment = HorizontalAlignment.Center;
            TextRange FF = paragraph2.AppendText("首页页眉");
            FF.CharacterFormat.FontSize = 12;

            //添加页眉页脚到其他页面
            Paragraph paragraph3 = section.HeadersFooters.Header.AddParagraph();
            paragraph3.Format.HorizontalAlignment = HorizontalAlignment.Center;
            TextRange NH = paragraph3.AppendText("非首页页眉");
            NH.CharacterFormat.FontSize = 12;
            Paragraph paragraph4 = section.HeadersFooters.Footer.AddParagraph();
            paragraph4.Format.HorizontalAlignment = HorizontalAlignment.Center;
            TextRange NF = paragraph4.AppendText("非首页页脚");
            NF.CharacterFormat.FontSize = 12;

            //保存文档
            document.SaveToFile("result.docx", FileFormat.Docx2010);
            System.Diagnostics.Process.Start("result.docx");
        }
    }
}

首页页眉页脚不同设置效果:

【示例3】不连续设置页码

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

namespace DifferentPageNumber_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建Document对象,并加载测试文档
            Document doc = new Document();
            doc.LoadFromFile("test.docx");

            //实例化HeaderFooter对象(指定页码添加位置:页眉或页脚)
            HeaderFooter footer = doc.Sections[0].HeadersFooters.Footer;
            //添加段落到页脚
            Paragraph footerParagraph = footer.AddParagraph();
            //添加页码域到页脚
            footerParagraph.AppendField("page number", FieldType.FieldPage);
            //设置页码右对齐
            footerParagraph.Format.HorizontalAlignment = HorizontalAlignment.Right;

            //创建段落样式,包括字体名称、大小、颜色
            ParagraphStyle style = new ParagraphStyle(doc);
            style.CharacterFormat.Font = new Font("黑体", 10, FontStyle.Bold);
            style.CharacterFormat.TextColor = Color.Black;
            doc.Styles.Add(style);
            //应用段落样式到页脚
            footerParagraph.ApplyStyle(style.Name);

            //将第一节的页码样式设置为罗马数字
            doc.Sections[0].PageSetup.PageNumberStyle = PageNumberStyle.RomanLower;

            //将第二节的页码样式设置为阿拉伯数字,并重新开始编码
            doc.Sections[1].PageSetup.PageNumberStyle = PageNumberStyle.Arabic;
            doc.Sections[1].PageSetup.RestartPageNumbering = true;
            doc.Sections[1].PageSetup.PageStartingNumber = 1;//此处可任意指定起始页码数

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

页码添加效果:

【示例4】复制页眉页脚

using Spire.Doc;

namespace CopyHeaderAndFooter_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //新建Word文档1,并加载带页眉的源文档
            Document doc1 = new Document();
            doc1.LoadFromFile("test1.docx");

            //获取文档1的页眉
            HeaderFooter Header = doc1.Sections[0].HeadersFooters.Header;

            //新建文档2,并加载目标文档
            Document doc2 = new Document("test2.docx");

            //遍历文档2中的所有Section
            foreach (Section section in doc2.Sections)
            {
                foreach (DocumentObject obj in Header.ChildObjects)
                {
                    //将复制的页眉对象添加到section
                    section.HeadersFooters.Header.ChildObjects.Add(obj.Clone());
                }
            }

            //保存并打开文档
            doc2.SaveToFile("copyHeader.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("copyHeader.docx");
        }
    }
}

测试文档:

测试结果:

【示例5】锁定页眉页脚

using Spire.Doc;

namespace ProtectHeaderFooter_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //加载测试文档
            Document doc = new Document();
            doc.LoadFromFile("sample.docx");

            //获取第一个section
            Section section = doc.Sections[0];

            //保护文档并设置 ProtectionType 为 AllowOnlyFormFields,并设置启用编辑的密码
            doc.Protect(ProtectionType.AllowOnlyFormFields, "123");

            //设置ProtectForm 为false 允许编辑其他区域
            section.ProtectForm = false;

            //保存文档
            doc.SaveToFile("result.docx", FileFormat.Docx2013);
            System.Diagnostics.Process.Start("result.docx");
        }
    }
}

运行程序生成的文档中,页眉将不允许被编辑,正确输入密码后,方可编辑页眉。

【示例6】删除页眉页脚

1.删除所有页面的页眉页脚

using Spire.Doc;

namespace RemoveHeaderFooter_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个Document实例并加载示例文档
            Document doc = new Document();
            doc.LoadFromFile("sample.docx");
            //获取第一个section
            Section section = doc.Sections[0];

            //删除页眉
            section.HeadersFooters.Header.ChildObjects.Clear();

            //删除页脚
            section.HeadersFooters.Footer.ChildObjects.Clear();

            //保存文档
            doc.SaveToFile("result.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("result.docx");
        }
    }
}

删除效果:

2.删除首页的页眉页脚

(适用于文档封面,不需要页眉页脚的情况,或者其他情形)

using Spire.Doc;

namespace RemoveHeaderFooter2_Doc
{
    class Program
    {
        static void Main(string[] args)
        {
            //创建一个Document实例并加载示例文档
            Document doc = new Document();
            doc.LoadFromFile("sample.docx");

            //获取第一个section
            Section section = doc.Sections[0];

            //设置页眉页脚首页不同
            section.PageSetup.DifferentFirstPageHeaderFooter = true;

            //删除首页页眉页脚
            section.HeadersFooters.FirstPageHeader.ChildObjects.Clear();

            //保存文档
            doc.SaveToFile("output.docx", FileFormat.Docx);
            System.Diagnostics.Process.Start("output.docx");
        }
    }
}

删除效果:

(本文完)
转载请注明出处!

原文地址:https://blog.51cto.com/eiceblue/2356554

时间: 2024-09-30 11:33:52

C# 操作Word页眉页脚——奇偶页/首页不同、不连续设置页码、复制页眉页脚、锁定页眉页脚、删除页眉的相关文章

word 2010+ 从指定页开始设置页码

word默认的页眉是全局相同的页眉,在页眉处添加页码得到是从整个word第一页开始的页码. 在写论文的时候,论文结构如下: 封面 摘要 中文摘要 英文摘要 目录 正文部分 现在需要对摘要进行i,ii设置页脚 还需要对正文进行1,2,3等页码页脚设置 怎么做.. 首先要对全局文档结构进行划分,需要用到分节符 的概念. 从上面的结构可以看出来,需要将文档划分为3个部分(摘要.目录.正文),那么就用三次分节符把文档划分了. 添加分节符 在目标页的起始部分添加分节符 . 这时候添加页脚,取消链接到前一条

比较全的 C# 操作 Word的代码

using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word;using System.IO;using System.Web;using System.Data;using System.Reflection;using Microsoft.Win32;using System.Text.RegularExpressions;using System.Net

C# 操作Word知识汇总

1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# .NET 使 Word 自动新建文档 2. 学习资源 (1)Word in the Office 基础知识,必读,下面的总结里有内容摘要 http://msdn.microsoft.com/en-us/library/Aa201330 网友翻译版:http://blog.csdn.net/hustliangchen/archive/2011/01/05/6118459.aspx (2)Word类的结构图,Applic

C#操作Word Aspose.Words组件介绍及使用—基本介绍与DOM概述

1.基本介绍 Aspose.Words是一个商业.NET类库,可以使得应用程序处理大量的文件任务.Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XPS,EPUB和其他格式.使用Aspose.Words可以在不使用Microsoft.Word的情况下生成.修改.转换和打印文档.在项目中使用Aspose.Words可以有以下好处. 1.1丰富的功能集 其丰富的功能特性主要有以下4个方面: 1)格式转换.Aspose.Words具有高质量的文件格式转

VC操作WORD文档总结

一.写在开头 最近研究word文档的解析技术,我本身是VC的忠实用户,看到C#里面操作WORD这么舒服,同时也看到单位有一些需求,就想尝试一下,结果没想到里面的技术点真不少,同时网络上的共享资料很多,但是很多就是起了一个头没有完整的资料,因此在此记录一下,首先感谢怪兽哥哥(开源了了IOCP一整套开源库的家伙还有很多隐藏技能大家可以关注他).骨头哥(不少好资料).savageII哥(大牛)这些网友他们很有共享精神.废话不说了开始正题. 二.环境搭建 我用的VC2010,其实在VC6.0以上的版本设

C#操作Word的超详细总结

本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置图片宽高以及给图片添加标题: 插入表格,格式化表格,往表格中插入数据: 保存Word,打印Word: 重新打开Word等. Visual studio版本:Visual Studio 2012(2010应该也可以) 准备工作: /* 1. 添加引用COM里面的 Microsoft Word 12.0

office2010里怎么设置页码为第几页共几页

在office2010里设置页眉,页脚,页码是很方便的,页眉页脚可以方便的添加信息,统一文本格式,页码的添加可以让读者清楚的知道阅读的进度,也可以方便下次阅读时从相应的页码开始阅读,就像软件中的进度条一条,直观明朗.office2010的word里怎么设置页码为第几页共几页和添加头部尾部信息呢,其实office已经为你准备了很多可靠的样式及功能,让你可以方便迅速的完成页眉,页脚和页码的设置.首先,打开word定位到你要设置页眉,页脚,页码的文档,然后点击"插入"就可以看到"页

C# /windowForm/WPF/SilverLight里面操作Word帮助类提供给大家

很多的程序都需要用到对word的操作,数据库里面的表需要一书面的形式展示出来,最近在的一个项 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Drawing; using Word = Microsoft.Office.Interop.Word; using Microsoft.Office.Interop.W

[转] c# 操作Word

来自 风过四季天 的原文 c# 操作Word总结 在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想 到网页的信息创建到一个word文本中,在显示的时,可以在线打开word,也可以把word转换成html标签显示. 这样使用word代替网页的原因有: 第一:网页生成数学公式和特殊符号存储和显示比较麻烦(如何操作word生成数学公式,有待测试) 第二:生成Word版的报告更容易存档和没有环境下的传阅及打印 第三