一:认识POI
Apache POI是一个开源的利用Java读写Excel、WORD等微软OLE2组件文档的项目。3.5以后加入了对采用OOXML格式的Office 2007支持,如xlsx、docx、pptx文档。
POI主页:poi.apache.org/
二:POI下载地址:http://poi.apache.org/download.html 目前版本最新版本3.13beta1,针对office2010及以下版本的正常读写功能3.5版本足以
三:POI组成部分概览
以下是POI的几个重要组成部分,以及各组件的功能概述。
HSSF: MS-Excel 97-2003(.xls),基于BIFF8格式的JAVA接口。
HWPF: MS-Word 97-2003(.doc),基于BIFF8格式的JAVA接口。只支持.doc文件简单的操作,读写能力有限。
HSLF:MS - PowerPoint 97-2003 (.ppt),基于BIFF8格式的JAVA接口。
XSSF:MS-Excel 2007+(.xlsx),基于OOXML格式的JAVA接口。
XWPF:MS-Word 2007+(.docx),基于OOXML格式的JAVA接口。较HWPF功能完善。
XSLF: MS - PowerPoint 2007+(.pptx),基于OOXML格式的JAVA接口。较HWPF功能完善。
四:HWPF读写word97-2003实例
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
//
import org.apache.poi.hwpf.extractor.WordExtractor;
public class FileTextRead {
public static void main(String[] args) {
FileTextRead frs=new FileTextRead();
System.out.println(frs.getTextFromWord("D:\\hwpftext.doc"));
}
public String getTextFromWord(String filePath){
String result = null;
File file = new File(filePath);
try{
FileInputStream fis = new FileInputStream(file);
//得到.doc文件提取器
WordExtractor wordExtractor = new WordExtractor(fis);
//提取.doc正文文本
result = wordExtractor.getText();
//提取.doc批注
//String[] comments = wordExtractor.getCommentsText();
wordExtractor.close();
}catch(FileNotFoundException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
};
return result;
}
}
D:\text.doc文件内容如下
打印结果:
测试poi读取doc中分本文档
五:XWPF:MS-Word 2007+(.docx)
我们只能获取到其文本,而不能获取到其文本对应的属性值
package office.file.read;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.hwpf.extractor.WordExtractor;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
public class FileTextRead {
public static void main(String[] args) {
FileTextRead frs=new FileTextRead();
System.out.println(frs.getTextFromWord2007("D:\\xwpftext.docx"));
}
public String getTextFromWord2007(String filePath){
InputStream is = null;
XWPFDocument doc = null;
<pre name="code" class="java"><pre name="code" class="java"> String text="";
try {is = new FileInputStream(filePath);doc = new XWPFDocument(is);
XWPFWordExtractor extractor = new XWPFWordExtractor(doc);
text = extractor.getText();<pre name="code" class="java"><pre name="code" class="java"> extractor.close();
} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace(); } //获得docx文件提取器 return text;}}
结果内容和打印结果同上