Apache POI是Apache軟件基金會的開放源碼函式庫,POI提供API給Java程序對Microsoft Office格式檔案讀和寫的功能。
1.讀取word 2003及word 2007需要的jar包
讀取2003 版本(.doc)的word文件相對來說比較簡單,只需要poi-3.5-beta6-20090622.jar 和poi-scratchpad-3.5-beta6-20090622.jar 兩個jar 包即可, 而2007 版本(.docx)就麻煩多,我說的這個麻煩不是我們寫代碼的時候麻煩,是要導入的jar 包比較的多,有如下7 個之多:
1. openxml4j-bin-beta.jar
2. poi-3.5-beta6-20090622.jar
3. poi-ooxml-3.5-beta6-20090622.jar
4 .dom4j-1.6.1.jar
5. geronimo-stax-api_1.0_spec-1.0.jar
6. ooxml-schemas-1.0.jar
7. xmlbeans-2.3.0.jar
其中4-7 是poi-ooxml-3.5-beta6-20090622.jar 所依賴的jar 包(在poi-bin-3.5-beta6-20090622.tar.gz 中的ooxml-lib 目錄下可以找到)。
2.換行符號
硬換行:文件中換行,如果是鍵盤中使用了"enter"的換行。
軟換行:文件中一行的字符數容量有限,當字符數量超過一定值時,會自動切到下行顯示。
對程序來說,硬換行才是可以識別的、確定的換行,軟換行與字體大小、縮進有關。
3.讀取的注意事項
值得注意的是: POI 在讀取不會讀取word 文件中的圖片信息; 還有就是對於2007 版的word(.docx), 如果word 文件中有表格,所有表格中的數據都會在讀取出來的字符串的最後。
4.讀取word文本內容代碼
import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import org.apache.poi.POIXMLDocument;import org.apache.poi.POIXMLTextExtractor;import org.apache.poi.hwpf.extractor. WordExtractor;import org.apache.poi.openxml4j.opc.OPCPackage;import org.apache.poi.xwpf.extractor.XWPFWordExtractor;public class Test { public static void main(String[] args) { try { InputStream is = new FileInputStream (new File("2003.doc")); WordExtractor ex = new WordExtractor(is); String text2003 = ex.getText(); System.out.println(text2003); OPCPackage opcPackage = POIXMLDocument.openPackage("2007.docx "); POIXMLTextExtractor extractor = new XWPFWordExtractor(opcPackage); String text2007 = extractor.getText(); System.out.println(text2007); } catch (Exception e) { e.printStackTrace(); } }}