2014-11-25 135 views
2

我想用XWPF jar(apache poi)在docx文档(一个新的,不存在的)上创建一个页眉和页脚。如何在新的docx文档中创建页眉/页脚?

当我使用XWPFHeaderFooterPolicy policy = document.getHeaderFooterPolicy();政策是空的,所以我会知道如何在一个新的文档中创建它。

CustomXWPFDocument document = new CustomXWPFDocument(); 
XWPFHeaderFooterPolicy policy = document.getHeaderFooterPolicy(); 
XWPFHeader head = policy.createHeader(policy.DEFAULT); 
head.getListParagraph().get(0).createRun().setText("Hello Header World!"); 
CTP ctP1 = CTP.Factory.newInstance(); 
CTR ctR1 = ctP1.addNewR(); 
CTText t = ctR1.addNewT(); 
t.setStringValue("Paragraph in header"); 
XWPFParagraph p1 = new XWPFParagraph(ctP1, document); 
XWPFParagraph[] pars = new XWPFParagraph[1]; 
pars[0] = p1; 
policy.createHeader(policy.FIRST, pars); 

回答

0

我有同样的问题,但没有找到任何解决方案。在这种情况下,我创建了带有页眉和页脚的模板docx文件,而不是更改它们。这种做法我在Apache mail archives中找到。

+0

谢谢段属性添加到XWPFDocument doc如果不存在,我看到它befor,但不帮助我的应用程序。我的文档是生成的,没有模板,但我只能使用一个模板来恢复页眉和页脚,并将它嵌入到生成的文档中......并且不知道该怎么做 – 2014-11-26 09:27:58

1

必须使用下面的代码

CTBody body = doc.getDocument().getBody(); 
CTSectPr sectPr = body.isSetSectPr()? body.getSectPr() : body.addNewSectPr(); 
0
public static void setFooter(XWPFDocument document, String footerText) { 
    CTP ctpFooter = CTP.Factory.newInstance(); 
    ctpFooter.addNewR().addNewT(); 

    XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document); 
    XWPFRun footerRun = createFormattedRun(footerParagraph); 
    footerRun.setFontSize(6); 
    footerRun.setText(footerText); 
    XWPFParagraph[] parsFooter = new XWPFParagraph[1]; 
    parsFooter[0] = footerParagraph; 

    CTSectPr sectPr = document.getDocument().getBody().addNewSectPr(); 
    XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr); 
    policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter); 
} 
相关问题