【随手记录】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即可完成脚注添加