
POI是Apache的一個開源項(xiàng)目,可以到Apache網(wǎng)站下載相應(yīng)的jar包文件,及其源文件。
POI提供了提取一些非TXT文本中文本內(nèi)容的API,比如提取Word,Excel等,使用起來非常方便。
為了說明POI提起Word文件的方便和簡單,通過提取一個Word文件的文本來,來了解POI API的功能。
假設(shè)在本地磁盤中存在一個Word文件
E:POIwordJBoss3.0 下配置和部署EJB簡介.doc文件是具有格式的,內(nèi)容如圖所示:
下面看看提取它的內(nèi)容是多么簡單。
首先從Apache網(wǎng)站上下載POI的相關(guān)jar包。
新建一個測試類:
package org.shirdrn.word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class MyWordExtractor {
public static void main(String[] args) {
File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB簡介.doc");
try {
FileInputStream fis = new FileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fis);
System.out.println("【 使用getText()方法提取的Word文件的內(nèi)容如下所示:】");
System.out.println(wordExtractor.getText());
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
提取Word文件的文本內(nèi)容,打印到控制臺上,如下所示:
使用WordExtractor類的getTextFromPieces()方法提取:
wordExtractor.getTextFromPieces();
結(jié)果和上面是一樣的。
WordExtractor類還有一個可以提取Word文件的各個段落的方法getParagraphText(),返回一個String[]數(shù)組,數(shù)組中每個元素為一個段的文本內(nèi)容。
這里,對Word文件中換行也看成是一個段,測試如下:
package org.shirdrn.word;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hwpf.extractor.WordExtractor;
public class MyWordExtractor {
public static void main(String[] args) {
File file = new File("E:\POI\word\JBoss3.0 下配置和部署EJB簡介.doc");
try {
FileInputStream fis = new FileInputStream(file);
WordExtractor wordExtractor = new WordExtractor(fis);
System.out.println("【 使用getText()方法提取的Word文件的內(nèi)容如下所示:】");
String[] paragraph = wordExtractor.getParagraphText();
System.out.println("該Word文件共有"+paragraph.length+"段。");
for(int i=0;i
System.out.println("< 第 "+(i+1)+" 段的內(nèi)容為 >");
System.out.println(paragraph[i]);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
提取Word文件的文本內(nèi)容,打印到控制臺上,如下所示:

從上面的Word文件可以看出,最后一行是Word文件的一個換行符,使用WordExtractor提取時,也把它默認(rèn)成為一個段,因?yàn)橐粋€段結(jié)束后應(yīng)該有一個回車換行符。
如果有多個Word文件,而且放在不同的目錄下,要提取它們的文本內(nèi)容,可以實(shí)現(xiàn)一個遞歸的函數(shù),通過深度遍歷,為每一個Word文件進(jìn)行提取。
如果需要,可以將提取到的Word文件的文本內(nèi)容輸出到本地磁盤中,比如以txt記事本的根式保存。
從上面可以看出,提取Word文件的文本內(nèi)容,實(shí)際上是將Word文件的格式去掉了,獲取到文本的內(nèi)容。