请问如何实现下面的效果
1.
2.
2.1.
2.2.
2.1. // 这里重新开始编号
1.
1.1
2.
2.1
2.2
1.1
1.2
1.
1.
2.
1.
2.
1.
2.
public static void createListStyle(Document document,String styleName){
//创建list样式
//设置为数字编号类型
ListStyle numberList = new ListStyle(document, ListType.Numbered);
numberList.setName(styleName);
/**
* 一级样式
*
*/
//设置前缀和后缀
numberList.getLevels().get(0).setNumberPrefix("");
numberList.getLevels().get(0).setNumberSufix(".");
//设置编号样式为中文数字
numberList.getLevels().get(0).setPatternType(ListPatternType.Arabic);
/**
* 二级样式
*
*/
//若改为下面这行,则会呈现为 2.1 2.2
//numberList.getLevels().get(1).setNumberPrefix("\u0000.");
numberList.getLevels().get(1).setNumberPrefix("");
numberList.getLevels().get(1).setNumberSufix(".");
numberList.getLevels().get(1).setPatternType(ListPatternType.Arabic);
document.getListStyles().add(numberList);
}
public static void main(String[] args) throws Exception {
//加载Word文档
Document document = new Document();
Section sec = document.addSection();
Paragraph paragraph = sec.addParagraph();
paragraph.appendText("Lists");
paragraph.applyStyle(BuiltinStyle.Title);
paragraph = sec.addParagraph();
paragraph.appendText("Numbered List:").getCharacterFormat().setBold(true);
createListStyle(document,"listStyle1");
createListStyle(document,"listStyle2");
//添加段落并应用样式
paragraph = sec.addParagraph();
paragraph.appendText("List Item 1");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(0);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(0);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.1");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.2");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.3");
//此处用另一个样式名 即可让序号从新的开始
paragraph.getListFormat().applyStyle("listStyle2");
paragraph.getListFormat().setListLevelNumber(1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.4");
paragraph.getListFormat().applyStyle("listStyle2");
paragraph.getListFormat().setListLevelNumber(1);
//保存文档
document.saveToFile("output.docx", FileFormat.Docx);
public static void createListStyle(Document document, String styleName, int[] startAt) {
//创建list样式
//设置为数字编号类型
ListStyle numberList = new ListStyle(document, ListType.Numbered);
numberList.setName(styleName);
String[] pres = {"\u0000", "\u0001", "\u0002", "\u0003", "\u0004", "\u0005", "\u0006", "\u0007"};
for (int i = 0; i < 9; i++) {
String preFix = "";
for (int j = 0; j < i; j++) {
preFix += pres[j] + ".";
}
//设置前缀和后缀
numberList.getLevels().get(i).setNumberPrefix(preFix);
numberList.getLevels().get(i).setNumberSufix(".");
numberList.getLevels().get(i).setStartAt(startAt[i]);
//设置编号样式为中文数字
numberList.getLevels().get(i).setPatternType(ListPatternType.Arabic);
}
document.getListStyles().add(numberList);
}
public static void main(String[] args) throws Exception {
//加载Word文档
Document document = new Document();
Section sec = document.addSection();
Paragraph paragraph = sec.addParagraph();
paragraph.appendText("Lists");
paragraph.applyStyle(BuiltinStyle.Title);
paragraph = sec.addParagraph();
paragraph.appendText("Numbered List:").getCharacterFormat().setBold(true);
int[] startAt1 = {1, 1, 1, 1, 1, 1, 1, 1, 1};
createListStyle(document, "listStyle1", startAt1);
//添加段落并应用样式
paragraph = sec.addParagraph();
paragraph.appendText("List Item 1");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(0);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(0);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.1");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.2");
paragraph.getListFormat().applyStyle("listStyle1");
paragraph.getListFormat().setListLevelNumber(1);
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.3");
//设置style2的Level1编号从2开始 以便于父层级编号正确
int[] startAt2 = {2, 1, 1, 1, 1, 1, 1, 1, 1};
createListStyle(document, "listStyle2", startAt2);
paragraph.getListFormat().applyStyle("listStyle2");
paragraph.getListFormat().setListLevelNumber(1);
paragraph.getListFormat().isRestartNumbering(true);
paragraph.getListFormat().getCurrentListLevel().setStartAt(1);
paragraph.updateListValue();
paragraph = sec.addParagraph();
paragraph.appendText("List Item 2.4");
paragraph.getListFormat().applyStyle("listStyle2");
paragraph.getListFormat().setListLevelNumber(1);
//保存文档
document.saveToFile("output.docx", FileFormat.Docx);
}