【随手记录】poi添加脚注

POI操作word添加脚注

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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即可完成脚注添加

posted @   空知大仙人  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示