Как извлечь docx (Word 2007 и выше) с помощью Apache POI - PullRequest
4 голосов
/ 31 августа 2010

Хай, я использую Apache POI 3.6 Я уже создал некоторый код ..

XWPFDocument doc = new XWPFDocument(new FileInputStream(file));
         wordxExtractor = new XWPFWordExtractor(doc);
         text = wordxExtractor.getText();

         System.out.println("adding docx " + file);
         d.add(new Field("content", text, Field.Store.NO, Field.Index.ANALYZED));

к сожалению, это сгенерировало ошибку ..

Exception in thread "main" java.lang.NoClassDefFoundError: org/dom4j/DocumentException
at org.apache.poi.openxml4j.opc.OPCPackage.init(OPCPackage.java:149)
at org.apache.poi.openxml4j.opc.OPCPackage.<init>(OPCPackage.java:136)
at org.apache.poi.openxml4j.opc.Package.<init>(Package.java:54)
at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:98)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:199)
at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:178)
at org.apache.poi.util.PackageHelper.open(PackageHelper.java:53)
at org.apache.poi.xwpf.usermodel.XWPFDocument.<init>(XWPFDocument.java:98)
at org.apache.lucene.demo.Indexer.indexDocs(Indexer.java:153)
at org.apache.lucene.demo.Indexer.main(Indexer.java:88)

Казалось, он использовал конструктор

XWPFWordExtractor (OPCPackage контейнер)

но не этот ->

XWPFWordExtractor (документ XWPFDocument)

Любой вопрос, почему? Или любая идея, как я могу извлечь .docx, а затем преобразовать его в строку?

Ответы [ 3 ]

4 голосов
/ 30 октября 2012

Вам необходимо добавить библиотеку dom4j в ваш claspath или в библиотеки вашего проекта

2 голосов
/ 01 апреля 2011

Похоже, у вас нет всех зависимостей на вашем пути к классам.

Если вы посмотрите на http://poi.apache.org/overview.html, вы увидите, что dom4j является необходимой библиотекой при работе с файлами OOXML. Из полученного исключения кажется, что у вас его нет ... Если вы посмотрите бинарную загрузку POI, вы должны найти ее в подкаталоге ooxml-libs.

0 голосов
/ 31 августа 2010

Вместо этого вы можете попробовать docx4j; см http://dev.plutext.org/svn/docx4j/trunk/docx4j/src/main/java/org/docx4j/TextUtils.java

...