2010-08-30 140 views
3

海(2007字以上),我使用的Apache POI 3.6 我已經創建了一些代碼..如何提取DOCX使用Apache POI

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然後將其轉換爲字符串?

回答

2

看起來您沒有類路徑中的所有依賴關係。

如果你看http://poi.apache.org/overview.html你會發現在使用OOXML文件時dom4j是一個必需的庫。從你得到的異常看來,你沒有它......如果你看看POI二進制下載,你應該在ooxml-libs子目錄中找到它。

3

您需要將dom4j庫添加到您的claspath或您的項目庫