ms-word - 我在 word 文档中得到多个页眉和页脚,使用 NPOI 在 policy.GetFirstPageHeader() 中获取 null
问题描述
我在 Word 文档中有多个页眉和页脚;我无法区分首页、默认(奇数)甚至标题。
当我试图打电话policy.GetFirstPageHeader()
时,我得到一个空值。
XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document);
var headerList = document.HeaderList;
var footerList = document.FooterList;
var firstPageHeader = policy.GetFirstPageHeader();
var firstPageFooter = policy.GetFirstPageFooter();
XWPFHeader header = policy.GetDefaultHeader();
XWPFHeader even = policy.GetEvenPageHeader();
XWPFHeader odd = policy.GetOddPageHeader();
我得到空值。任何人都可以建议如何区分 Word 文档中的标题吗?
解决方案
var listOfheaders = new List<CT_HdrFtrRef>();
foreach (var par in document.Paragraphs)
{
var ParagraphsectPr = (CT_P)par.GetType().GetField("paragraph", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(par);
if (ParagraphsectPr.pPr.sectPr != null)
{
foreach (var headerref in ParagraphsectPr.pPr.sectPr.headerReference)
{
listOfheaders.Add(headerref);
}
}
}
foreach (var list in listOfheaders)
{
var relatedPart = document.GetRelationById(list.id);
XWPFHeader hdr = null;
if (relatedPart != null && relatedPart is XWPFHeader)
{
hdr = (XWPFHeader)relatedPart;
}
// Assign it
ST_HdrFtr type = list.type;
if (!string.IsNullOrEmpty(hdr.Text))
{
if (type == ST_HdrFtr.first)
{
firstPageHeadr = hdr;
}
else if (type == ST_HdrFtr.even)
{
evenPageHeader = hdr;
}
else
{
defaultHeader = hdr;
}
}
}
推荐阅读
- spring-boot - 在 Spring Boot 中更改 serverTimezone
- python - 龙卷风异步收益率
- git - 切换 PC 时总是丢失 git 历史记录
- ios - TestFlight 状态已批准和准备提交之间有什么区别?
- python - 从 Python 脚本运行 ImageJ 宏未找到错误
- python - 将列表的值从 csv 计数到表
- hadoop - 我正在使用自由格式查询和使用 where 条件进行 sqoop 导入
- c++ - 使用单链表反转字符串
- python - 如何从网站抓取数据并将其附加到 Excel 电子表格中
- asp.net-mvc - 如何使用内联 css 修复引导表的标题?