gpt4 book ai didi

java - 如何使用POI读取Word中的标题编号

转载 作者:行者123 更新时间:2023-11-30 07:47:20 58 4
gpt4 key购买 nike

在结构如下的 Word 文档中:

1  Title 1
1.1 title 1.1
1.2 title 1.2
1.2.1 title 1.2.1
1.3 title 1.3

我可以使用 阅读标题, 但无法读取自动生成标题前的数字。

我想知道是否有办法使用 读取它

最佳答案

恐怕你必须自己计算,这里是你可以在 XWPFParagraph 对象上使用的方法来提取你需要的数据:

您可以这样使用它们:

for (XWPFParagraph paragraph : paragraphList) {
System.out.println("text: "+paragraph.getNumLevelText());
System.out.println("depth: "+paragraph.getNumIlvl());
System.out.println("format: "+paragraph.getNumFmt());
}

我试过这个文件:

enter image description here

它输出:

text: %1.
depth: 0
format: decimal

text: %1.%2.
depth: 1
format: decimal

text: %1.%2.
depth: 1
format: decimal

text: %1.%2.%3.
depth: 2
format: decimal

text: %1.%2.
depth: 1
format: decimal

因此,您将从那里了解每个标题的格式。您需要自己评估。

编辑

这可能适合您。由于您只有小数,所以这是一个简单的案例。

int[] levelCurrentValues = new int[] {0,0,0};

for (XWPFParagraph paragraph : paragraphList) {
String levelText = paragraph.getNumLevelText();
BigInteger levelDepth = paragraph.getNumIlvl();
String levelFormat = paragraph.getNumFmt();
System.out.println("text: "+levelText);
System.out.println("depth: "+levelDepth);
System.out.println("format: "+levelFormat);

if(levelText!=null) {
levelCurrentValues[levelDepth.intValue()] += 1;

levelText = levelText.replace("%1", "" + levelCurrentValues[0]);
levelText = levelText.replace("%2", "" + levelCurrentValues[1]);
levelText = levelText.replace("%3", "" + levelCurrentValues[2]);
System.out.println(levelText);
System.out.println("");
}
}

当针对与上面相同的文件运行时,它输出

text: %1.
depth: 0
format: decimal
1.

text: %1.%2.
depth: 1
format: decimal
1.1.

text: %1.%2.
depth: 1
format: decimal
1.2.

text: %1.%2.%3.
depth: 2
format: decimal
1.2.1.

text: %1.%2.
depth: 1
format: decimal
1.3.

关于java - 如何使用POI读取Word中的标题编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49868902/

58 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com