【问题标题】:Identifying Bullets in Ms Word, using Apache POI使用 Apache POI 识别 Ms Word 中的项目符号
【发布时间】:2017-12-05 19:24:46
【问题描述】:

我正在尝试制作一个可以读取 word 文件 (docx) 并用它做一些事情的应用程序。到目前为止,除了识别子弹之外,我几乎完成了所有工作。 我可以找到 isBold()、isItalic()、isStrike() 但我似乎找不到 isBullet()

谁能告诉我如何识别子弹?

应用程序是用 Java 构建的

【问题讨论】:

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


【解决方案1】:

没有isBullet() 方法,因为Word 中的列表样式要复杂得多。您有不同的缩进级别、不同样式的项目符号、编号列表和项目符号列表等

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

返回此段落的编号格式,例如项目符号或小写字母。如果此段落没有数字样式,则返回 null。

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

【讨论】:

  • 我爱你!!!!成功了哈哈!有效! *我到处寻找答案!!!你是救生员!
【解决方案2】:

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

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-07
    • 1970-01-01
    • 2014-08-16
    相关资源
    最近更新 更多