我试图用apache poi创建一个既包含圆点又包含编号列表的文档。 我想得到这样的结果。
名单:
清单1项目0
清单1项目1
清单1项目2
列表后的段落。
清单2:
清单2项目0
清单2项目1
清单2项目2
清单之后的段落2。
如果我尝试在两个不同的文档中创建两个列表,则一切正常。
但是,如果它们在同一个文档中,我只会得到创建的第一个样式。
例如,在下面的代码中,我首先创建项目符号点列表,然后创建编号。 但是生成的文档包含两个项目符号点列表。
我认为问题在于文档认为第一个列表仍处于打开状态,并且对下一个列表也使用相同的样式。
如何告知文档列表为“已关闭”? 有什么建议吗?
非常感谢你!
import java.io.FileOutputStream;
import java.math.BigInteger;
import org.apache.poi.xwpf.usermodel.XWPFAbstractNum;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFNumbering;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTAbstractNum;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTNumbering;
public class QuickTest {
static String cTAbstractNumBulletXML =
""
+ ""
+ ""
+ ""
+ ""
+ "";
static String cTAbstractNumDecimalXML =
""
+ ""
+ ""
+ ""
+ ""
+ "";
public static void main(String[] args) throws Exception {
XWPFDocument document = new XWPFDocument();
{
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("The List:");
CTNumbering cTNumbering = CTNumbering.Factory.parse(cTAbstractNumBulletXML);
CTAbstractNum cTAbstractNum = cTNumbering.getAbstractNumArray(0);
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
XWPFNumbering numbering = document.createNumbering();
BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);
BigInteger numID = numbering.addNum(abstractNumID);
System.out.println("numID: " + numID);
for (int i = 0; i < 3; i++) {
paragraph = document.createParagraph();
paragraph.setNumID(numID);
run = paragraph.createRun();
run.setText("List1 item " + i);
if (i < 2) paragraph.setSpacingAfter(0);
}
paragraph = document.createParagraph();
run=paragraph.createRun();
run.setText("Paragraph after the list.");
}
{
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run=paragraph.createRun();
run.setText("The List2:");
CTNumbering cTNumbering = CTNumbering.Factory.parse(cTAbstractNumDecimalXML);
CTAbstractNum cTAbstractNum = cTNumbering.getAbstractNumArray(0);
XWPFAbstractNum abstractNum = new XWPFAbstractNum(cTAbstractNum);
XWPFNumbering numbering = document.createNumbering();
BigInteger abstractNumID = numbering.addAbstractNum(abstractNum);
BigInteger numID = numbering.addNum(abstractNumID);
System.out.println("numID: " + numID);
for (int i = 0; i < 3; i++) {
paragraph = document.createParagraph();
paragraph.setNumID(numID);
run = paragraph.createRun();
run.setText("List2 item " + i);
if (i < 2) paragraph.setSpacingAfter(0);
}
paragraph = document.createParagraph();
run=paragraph.createRun();
run.setText("Paragraph after the list2.");
}
FileOutputStream out = new FileOutputStream("CreateWordBulletAndDecimalList.docx");
document.write(out);
System.out.println("CreateWordBulletOrDecimalList written successully");
}
}
本文探讨了使用Apache POI库在Word文档中创建带有圆点和编号的列表时遇到的问题。具体讨论了在同一文档中创建不同类型的列表时,如何避免样式冲突,确保每个列表正确应用其指定的样式。
612

被折叠的 条评论
为什么被折叠?



