1. 程式人生 > >java POI匯入Word文件

java POI匯入Word文件

java使用poi讀取doc和docx檔案(maven自動匯入依賴包)

<dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.8</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-scratchpad</artifactId>
        <version>3.8</version>
    </dependency>

硬換行:檔案中換行,如果是鍵盤中使用了"enter"的換行。

軟換行:檔案中一行的字元數容量有限,當字元數量超過一定值時,會自動切到下行顯示

  對程式來說,硬換行才是可以識別的、確定的換行,軟換行與字型大小、縮排有關。


注意:POI 在讀取不會讀取 word 檔案中的圖片資訊; 還有就是對於 2007 版的 word(.docx), 如果 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();
        }
    }
}