【发布时间】:2017-12-05 19:24:46
【问题描述】:
我正在尝试制作一个可以读取 word 文件 (docx) 并用它做一些事情的应用程序。到目前为止,除了识别子弹之外,我几乎完成了所有工作。 我可以找到 isBold()、isItalic()、isStrike() 但我似乎找不到 isBullet()
谁能告诉我如何识别子弹?
应用程序是用 Java 构建的
【问题讨论】:
标签: java jakarta-ee ms-word apache-poi
我正在尝试制作一个可以读取 word 文件 (docx) 并用它做一些事情的应用程序。到目前为止,除了识别子弹之外,我几乎完成了所有工作。 我可以找到 isBold()、isItalic()、isStrike() 但我似乎找不到 isBullet()
谁能告诉我如何识别子弹?
应用程序是用 Java 构建的
【问题讨论】:
标签: java jakarta-ee ms-word apache-poi
没有isBullet() 方法,因为Word 中的列表样式要复杂得多。您有不同的缩进级别、不同样式的项目符号、编号列表和项目符号列表等
对于您的用例,您调用的最简单的方法可能是XWPFParagraph.html.getNumFmt():
返回此段落的编号格式,例如项目符号或小写字母。如果此段落没有数字样式,则返回 null。
调用它,如果你得到 null 它不是一个列表,如果是,你会知道它是否是项目符号、数字、字母等
【讨论】:
您可以使用以下代码从 word 文档中获取所有项目符号的列表。我用过 apache poi 的 XWPF api。
public class ListTest {
public static void main(String[] args) {
String filename = "file_path";
List<String> paraList = new ArrayList<String>();
try {
// is = new FileInputStream(fileName);
XWPFDocument doc =
new XWPFDocument(OPCPackage.open(filename));
List<XWPFParagraph> paragraphList = doc.getParagraphs();
for(XWPFParagraph para :paragraphList) {
if((para.getStyle()!=null) && (para.getNumFmt() !=null)) {
paraList.add(para.getText());
}
for(String bullet :paraList) {
System.out.println(bullet);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
【讨论】: