Чтение файла .docx с помощью Apache POI - PullRequest
0 голосов
/ 01 ноября 2019

Я хочу сейчас прочитать и распечатать весь файл .docx в консоли. Я читал, что вы не можете сделать это без Apache POI или Docx4J, я попробовал оба и потерпел неудачу дважды. Также я знаю, что этот вопрос уже существует в Stackoverflow, но я боюсь, что он может быть устаревшим.

Это мой код с Apache POI прямо сейчас.

import java.io.File;
import java.io.FileInputStream;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;

public class test {
    public static void readDocxFile(String fileName) {
        try {
            File file = new File(fileName);
            FileInputStream fis = new FileInputStream(file.getAbsolutePath());
            XWPFDocument document = new XWPFDocument(fis);
            List<XWPFParagraph> paragraphs = document.getParagraphs();
            for (int i = 0; i < paragraphs.size(); i++) {
                System.out.println(paragraphs.get(i).getParagraphText());
            }
            fis.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        readDocxFile("C:\\Basics.docx");
    }
} 

Это было взято из другого вопроса здесь, но это не работает. Я получаю следующее сообщение об ошибке:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/compress/archivers/zip/ZipFile
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:307)
    at org.apache.poi.ooxml.util.PackageHelper.open(PackageHelper.java:37)
    at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:142)
    at test.readDocxFile(test.java:16)
    at test.main(test.java:28)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.compress.archivers.zip.ZipFile
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:604)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 5 more

1 Ответ

1 голос
/ 01 ноября 2019

Это связано с библиотекой, которая не включена непосредственно в POI. Если вы используете maven, добавьте следующую зависимость в ваш проект:

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-compress</artifactId>
    <version>1.18</version>
</dependency>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...