В Привет, как я могу возобновить нумерацию в java word apache poi? Я предоставил метод BigInteger getNewDecimalNumberingId(XWPFDocument document, 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_LETTER);
изменилось. %1:
снова шаблон. Теперь это означает %1
= следующая доступная буква для уровня 1, за которой следует двоеточие :
.