【随手记录】poi添加脚注
POI操作word添加脚注
private void addFootNote(XWPFDocument doc, XWPFParagraph paragraph) {
// 检查是否为空
if (doc.getFootnotes().isEmpty()){
doc.createFootnotes();
}
XWPFFootnotes footnotes = doc.createFootnotes();
// 创建脚注
CTFtnEdn ctFtnEdn = CTFtnEdn.Factory.newInstance();
BigInteger footNoteId = BigInteger.valueOf(footnotes.getFootnotesList().size());
ctFtnEdn.setId(footNoteId);
// 关联脚注样式
CTP ctp = ctFtnEdn.addNewP();
ctp.addNewPPr().addNewPStyle().setVal("FootnoteText");
// 设置脚注内容及样式
CTR ctr = ctp.addNewR();
ctr.addNewRPr().addNewRStyle().setVal("FootnoteReference");
ctr.addNewFootnoteRef();
// 脚注文本 固定
CTText cttext = ctp.addNewR().addNewT();
cttext.setStringValue("这是脚注内容");
cttext.setSpace(SpaceAttribute.Space.PRESERVE);
// 添加脚注
footnotes.addFootnote(ctFtnEdn);
// 脚注关联word内容
ctr = paragraph.getCTP().addNewR();
//ctr = paragraph.getCTP().addNewR();
ctr.addNewRPr().addNewRStyle().setVal("FootnoteReference");
ctr.addNewFootnoteReference().setId(footNoteId);
// 样式
if (doc.getStyles()==null){
doc.createStyles();
}
// 脚注链接样式
CTStyle style = CTStyle.Factory.newInstance();
style.setStyleId("FootnoteReference");
style.setType(STStyleType.CHARACTER);
style.addNewName().setVal("footnote reference");
style.addNewBasedOn().setVal("DefaultParagraphFont");
style.addNewUiPriority().setVal(new BigInteger("99"));
style.addNewSemiHidden();
style.addNewUnhideWhenUsed();
style.addNewRPr().addNewVertAlign().setVal(STVerticalAlignRun.SUPERSCRIPT);
// 添加脚注样式
doc.getStyles().addStyle(new XWPFStyle(style));
// 脚注文本样式
style = CTStyle.Factory.newInstance();
style.setType(STStyleType.PARAGRAPH);
style.setStyleId("FootnoteText");
style.addNewName().setVal("footnote text");
style.addNewBasedOn().setVal("Normal");
style.addNewLink().setVal("FootnoteTextChar");
style.addNewUiPriority().setVal(new BigInteger("99"));
style.addNewSemiHidden();
style.addNewUnhideWhenUsed();
CTRPr rpr = style.addNewRPr();
rpr.addNewSz().setVal(new BigInteger("20"));
rpr.addNewSzCs().setVal(new BigInteger("20"));
// 添加脚注样式
doc.getStyles().addStyle(new XWPFStyle(style));
// 字符样式
style = CTStyle.Factory.newInstance();
style.setStyleId("FootnoteTextChar");
style.setType(STStyleType.CHARACTER);
style.addNewName().setVal("Footnote Text Char");
style.addNewBasedOn().setVal("DefaultParagraphFont");
style.addNewLink().setVal("FootnoteText");
style.addNewUiPriority().setVal(new BigInteger("99"));
style.addNewSemiHidden();
rpr = style.addNewRPr();
rpr.addNewSz().setVal(new BigInteger("20"));
rpr.addNewSzCs().setVal(new BigInteger("20"));
// 添加脚注样式
doc.getStyles().addStyle(new XWPFStyle(style));
}
之后doc回写word即可完成脚注添加

浙公网安备 33010602011771号