使用Apache POI识别Ms Word中的项目符号

时间:2015-05-08 01:50:59

标签: java java-ee ms-word apache-poi

我试图创建一个能够读取word文件(docx)的应用程序并用它来做一些事情。到目前为止,除了识别子弹之外,我几乎完成了所有事情。 我可以找到isBold(),isItalic(),isStrike()但我似乎无法找到 isBullet()

任何人都可以告诉我如何识别子弹吗?

该应用程序是用Java构建的

2 个答案:

答案 0 :(得分:1)

没有IOException方法,因为Word中的列表样式比这复杂得多。你有不同的缩进级别,不同风格的项目符号,编号列表和项目符号列表等

对于您的用例,最简单的方法可能是XWPFParagraph.html.getNumFmt()

  

返回此段落的编号格式,例如bullet或lowerLetter。如果此段落没有数字样式,则返回null。

调用它,如果你得到null,它就不是一个列表,如果是,你就会知道它是否带有项目符号,数字,字母等

答案 1 :(得分:0)

您可以使用以下代码获取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();
    }

}