有一个Apache POI单元测试可以涵盖您的实际情况- 您正在寻找TestXWPFHeader#testSetHeader()。它涵盖了从没有设置页眉或页脚的文档开始,然后添加它们
您的代码基本上是这样的:
XWPFHeaderFooterPolicy policy = sampleDoc.getHeaderFooterPolicy();
if (policy.getDefaultHeader() == null && policy.getFirstPageHeader() == null
&& policy.getDefaultFooter() == null) {
// Need to create some new headers
// The easy way, gives a single empty paragraph
XWPFHeader headerD = policy.createHeader(policy.DEFAULT);
headerD.getParagraphs(0).createRun().setText("Hello Header World!");
// Or the full control way
CTP ctP1 = CTP.Factory.newInstance();
CTR ctR1 = ctP1.addNewR();
CTText t = ctR1.addNewT();
t.setStringValue("Paragraph in header");
XWPFParagraph p1 = new XWPFParagraph(ctP1, sampleDoc);
XWPFParagraph[] pars = new XWPFParagraph[1];
pars[0] = p1;
policy.createHeader(policy.FIRST, pars);
} else {
// Already has a header, change it
}
有关创建页眉和页脚的更多信息,请参见XWPFHeaderFooterPolicy JavaDocs。
它不是最好的,因此理想情况下它可以使用某种形式的灵魂提交补丁以使其更美观(提示……!),但是它可以如单元测试所示