ApachePOIJava。我试图添加大写字母编号,但结果是所有部分都得到编号
下面的代码允许我添加大写字母编号,它将字母A添加到第一部分,但对于其余部分,它保留相同的字母A。它不会创建连续的列表编号。我得到的是: 这是第一节 这是第二节 我需要得到的是: 这是第一节 这是第二节 关于如何实现这一点有什么想法吗 List=document.getparations() }在中,我提供了一个方法ApachePOIJava。我试图添加大写字母编号,但结果是所有部分都得到编号,java,apache-poi,Java,Apache Poi,下面的代码允许我添加大写字母编号,它将字母A添加到第一部分,但对于其余部分,它保留相同的字母A。它不会创建连续的列表编号。我得到的是: 这是第一节 这是第二节 我需要得到的是: 这是第一节 这是第二节 关于如何实现这一点有什么想法吗 List=document.getparations() }在中,我提供了一个方法BigInteger getNewDecimalNumberingId(XWPFDocument文档,BigInteger abstractNumID)。用这种方法 ... CTL
BigInteger getNewDecimalNumberingId(XWPFDocument文档,BigInteger abstractNumID)
。用这种方法
...
CTLvl cTLvl = cTAbstractNum.addNewLvl();
cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);
cTLvl.addNewLvlText().setVal("%1.");
cTLvl.addNewStart().setVal(BigInteger.valueOf(1));
...
表示以下内容:向具有数字格式十进制的抽象编号添加第一级,并添加模式为%1的级别文本。
从第一个可用数字开始
那里的%1.
是一种模式。它不是表示1.
,而是%1
=级别1的下一个可用数字,后跟点
。如果有更多级别,则在级别2中,lvlText
可能有val=“%1.%2.”
。这意味着%1
=级别1的当前编号,后面是点
,后面是%2
=级别2的下一个可用编号,后面是点
大写字母编号的相应方法为:
BigInteger getNewUpperLetterNumberingId(XWPFDocument document, BigInteger abstractNumID) {
CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();
cTAbstractNum.setAbstractNumId(abstractNumID);
CTLvl cTLvl = cTAbstractNum.addNewLvl();
cTLvl.addNewNumFmt().setVal(STNumberFormat.UPPER_LETTER);
cTLvl.addNewLvlText().setVal("%1:");
cTLvl.addNewStart().setVal(BigInteger.valueOf(1));
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
XWPFNumbering numbering = document.createNumbering();
abstractNumID = numbering.addAbstractNum(abstractNum);
BigInteger numID = numbering.addNum(abstractNumID);
return numID;
}
您只看到cTLvl.addNewNumFmt().setVal(STNumberFormat.UPPER_字母)代码>已更改。%1:
又是一种模式。现在它的意思是%1
=级别1的下一个可用字母,后跟冒号:
在中,我提供了一个方法BigInteger getNewDecimalNumberingId(XWPFDocument文档,BigInteger abstractNumID)
。用这种方法
...
CTLvl cTLvl = cTAbstractNum.addNewLvl();
cTLvl.addNewNumFmt().setVal(STNumberFormat.DECIMAL);
cTLvl.addNewLvlText().setVal("%1.");
cTLvl.addNewStart().setVal(BigInteger.valueOf(1));
...
表示以下内容:向具有数字格式十进制的抽象编号添加第一级,并添加模式为%1的级别文本。
从第一个可用数字开始
那里的%1.
是一种模式。它不是表示1.
,而是%1
=级别1的下一个可用数字,后跟点
。如果有更多级别,则在级别2中,lvlText
可能有val=“%1.%2.”
。这意味着%1
=级别1的当前编号,后面是点
,后面是%2
=级别2的下一个可用编号,后面是点
大写字母编号的相应方法为:
BigInteger getNewUpperLetterNumberingId(XWPFDocument document, BigInteger abstractNumID) {
CTAbstractNum cTAbstractNum = CTAbstractNum.Factory.newInstance();
cTAbstractNum.setAbstractNumId(abstractNumID);
CTLvl cTLvl = cTAbstractNum.addNewLvl();
cTLvl.addNewNumFmt().setVal(STNumberFormat.UPPER_LETTER);
cTLvl.addNewLvlText().setVal("%1:");
cTLvl.addNewStart().setVal(BigInteger.valueOf(1));
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
XWPFNumbering numbering = document.createNumbering();
abstractNumID = numbering.addAbstractNum(abstractNum);
BigInteger numID = numbering.addNum(abstractNumID);
return numID;
}
您只看到cTLvl.addNewNumFmt().setVal(STNumberFormat.UPPER_字母)代码>已更改。%1:
又是一种模式。现在它的意思是%1
=级别1的下一个可用字母,后面跟冒号:
谢谢Axel,通过更改以下内容,代码现在确实工作正常:cTLvl.addNewLvlText().setVal(“%1”);代码现在正在添加大写字母编号。还感谢您对%1的解释。感谢Axel,通过更改以下内容,代码现在确实可以正常工作:cTLvl.addNewLvlText().setVal(“%1”);代码现在正在添加大写字母编号。还感谢您对%1的解释。图案