java自动生成项目编号_java - Apache POI,在同一文档中创建项目符号点和编号列表 - 堆栈内存溢出...

本文探讨了使用Apache POI库在Word文档中创建带有圆点和编号的列表时遇到的问题。具体讨论了在同一文档中创建不同类型的列表时,如何避免样式冲突,确保每个列表正确应用其指定的样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我试图用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");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值