前言

本文是对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[];
section.PageSetup.DifferentOddAndEvenPagesHeaderFooter = true; //设置奇偶数页的页脚
Paragraph P1 = section.HeadersFooters.EvenFooter.AddParagraph();
TextRange EF = P1.AppendText("偶数页页脚");
EF.CharacterFormat.FontName = "Calibri";
EF.CharacterFormat.FontSize = ;
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 = ;
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 = ;
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 = ;
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 HeadersFootersForOddAndEvenPages
{
class Program
{
static void Main(string[] args)
{
//创建Document类的对象,并加载测试文档
Document document = new Document();
document.LoadFromFile("test.docx"); //获取指定节,并设置页眉页脚首页不同属性为true
Section section = document.Sections[];
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 = ; //添加页眉页脚到其他页面
Paragraph paragraph3 = section.HeadersFooters.Header.AddParagraph();
paragraph3.Format.HorizontalAlignment = HorizontalAlignment.Center;
TextRange NH = paragraph3.AppendText("非首页页眉");
NH.CharacterFormat.FontSize = ;
Paragraph paragraph4 = section.HeadersFooters.Footer.AddParagraph();
paragraph4.Format.HorizontalAlignment = HorizontalAlignment.Center;
TextRange NF = paragraph4.AppendText("非首页页脚");
NF.CharacterFormat.FontSize = ; //保存文档
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[].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("黑体", , FontStyle.Bold);
style.CharacterFormat.TextColor = Color.Black;
doc.Styles.Add(style);
//应用段落样式到页脚
footerParagraph.ApplyStyle(style.Name); //将第一节的页码样式设置为罗马数字
doc.Sections[].PageSetup.PageNumberStyle = PageNumberStyle.RomanLower; //将第二节的页码样式设置为阿拉伯数字,并重新开始编码
doc.Sections[].PageSetup.PageNumberStyle = PageNumberStyle.Arabic;
doc.Sections[].PageSetup.RestartPageNumbering = true;
doc.Sections[].PageSetup.PageStartingNumber = ;//此处可任意指定起始页码数 //保存文档
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[].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[]; //保护文档并设置 ProtectionType 为 AllowOnlyFormFields,并设置启用编辑的密码
doc.Protect(ProtectionType.AllowOnlyFormFields, ""); //设置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[]; //删除页眉
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[]; //设置页眉页脚首页不同
section.PageSetup.DifferentFirstPageHeaderFooter = true; //删除首页页眉页脚
section.HeadersFooters.FirstPageHeader.ChildObjects.Clear(); //保存文档
doc.SaveToFile("output.docx", FileFormat.Docx);
System.Diagnostics.Process.Start("output.docx");
}
}
}

删除效果:

(本文完)

如需转载,请注明出处!

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

  1. word文档常用的格式操作(分页、分节、每一节如何设置页码、以及生成目录)

    分页: 分节: 自动生成目录:

  2. Java 操作Word表格——创建嵌套表格、添加/复制表格行或列、设置表格是否禁止跨页断行

    本文将对如何在Java程序中操作Word表格作进一步介绍.操作要点包括 如何在Word中创建嵌套表格. 对已有表格添加行或者列 复制已有表格中的指定行或者列 对跨页的表格可设置是否禁止跨页断行 创建表 ...

  3. word中怎样设置页码包含总页数

    一个同事做毕业论文,论文是Word格式,1-2页是封面和目录,不需要页码,第3-10页是论文内容,需要从第1页开始显示,并显示论文内容的总页数8 页.具体为页脚处显示“第*页共*页”.他让我帮忙设置一 ...

  4. word怎样从第三页开始设置页码

    一般的文件都是有封面,目录.然后才是正文.所以基本上第一页的封面,第二页是目录,第三页才是正文的开始.但是默认的页码会从第一页开始的,封面上海有页码这会很难看,今天和小编一起来看看怎样将页码从第三页开 ...

  5. word从任意页设置页码

    把所有页都设置页码 首先设置分隔符,下一页 在第二节中,找到插入页码,设置起始页码为1即可

  6. [转]C#操作Word的超详细总结

    本文中用C#来操作Word,包括: 创建Word: 插入文字,选择文字,编辑文字的字号.粗细.颜色.下划线等: 设置段落的首行缩进.行距: 设置页面页边距和纸张大小: 设置页眉.页码: 插入图片,设置 ...

  7. C# 操作Word知识汇总

    转自:http://blog.csdn.net/jiutao_tang/article/details/6574740 1. 微软官方实例: 段落.表格.图表 HOW TO:利用 Visual C# ...

  8. C#操作Word的辅助类(word2003) 修改完善版

    转自:http://blog.csdn.net/jiutao_tang/article/details/6567608 该类在他人编写的几个类基础上扩展完善而来,主要功能有: (1)插入文本 (2)插 ...

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

    using System;using System.Collections.Generic;using System.Text;using Microsoft.Office.Interop.Word; ...

随机推荐

  1. 2018山东省ACM省赛G题-Game

    Alice and Bob are playing a stone game. There are n piles of stones. In each turn, a player can remo ...

  2. Laravel 框架 基础(一)

    Laravel 框架 laravel 5.2 在 5.1 基础上继续改进和优化,添加了许多新的功能特性:多认证驱动支持.隐式模型绑定.简化 Eloquent 全局作用域.可选择的认证脚手架.中间件组. ...

  3. JDBC、DBUtils

    JDBC(Java Data Base Connectivity) java数据连接 可以为多种数据库,提供统一访问,它由一组用java语言编写的类和接口组成,也是java访问数据库的规范.   my ...

  4. mysql 基础语法掌握~ This is just the beginning.

    create database 数据库名; drop database 数据库名; use 数据库名; create table table_name ( column_name, column_ty ...

  5. 关于office在卸载了某一应用之后无法试图使用的功能所在的网络位置

    我出现这个问题是在卸载了某一个微软的办公软件之后,所有的办公软件都会产生这个问题. 处理的方法是将之前的安装包解压,然后找到所出现的msi文件,点击确定就ok了. 所以说,安装文件最好还是放在一个地方 ...

  6. Java如何获取系统信息(包括操作系统、jvm、cpu、内存、硬盘、网络、io等)

    1 下载安装sigar-1.6.4.zip 使用java自带的包获取系统数据,容易找不到包,尤其是内存信息不够准确,所以选择使用sigar获取系统信息. 下载地址:http://sourceforge ...

  7. linux,windows下检测指定的IP地址是否可用或者检测IP地址冲突的3种方式(批处理程序,python程序,linux shell 批量ping)

    本文中的脚本适用范围: 1)检测某些IP地址是否被占用: 2)检测网络中某些设备是否存活: 3)在分配新的ip地址之前,批量检测环境中是否存在冲突的机器 以上检测基于ICMP Ping报文,要求所有的 ...

  8. 【数据结构】B-Tree, B+Tree, B*树介绍

    [摘要] 最近在看Mysql的存储引擎中索引的优化,神马是索引,支持啥索引.全是浮云,目前Mysql的MyISAM和InnoDB都支持B-Tree索引,InnoDB还支持B+Tree索引,Memory ...

  9. 深入JVM分析spring-boot应用hibernate-validator

    问题 可重现的Demo代码:demo.zip 最近排查一个spring boot应用抛出hibernate.validator NoClassDefFoundError的问题,异常信息如下: Caus ...

  10. 找不到 blog.csdn.net 的服务器 DNS 地址

    找不到 blog.csdn.net 的服务器 DNS 地址 csdn的博客用win7的电脑打不开是怎么回事?手机可以正常打开,csdn的bbs 下载什么的都可以正常使用. blog.csdn.net显 ...