使用Apache POI抽取OFFICE文本(DOC, DOCX, XLS, XLSX, PPT, PPTX)——Desktop Search开发笔记【经验积累】
- 下载Apache POI(http://poi.apache.org/download.html#POI-3.10-beta2)
- 把下面5个jar包和两个lib文件夹中的jar导入项目classpath
poi-3.10-beta1-20130628.jar poi-excelant-3.10-beta1-20130628.jar poi-ooxml-3.10-beta1-20130628.jar poi-ooxml-schemas-3.10-beta1-20130628.jar poi-scratchpad-3.10-beta1-20130628.jar /lib /ooxml-lib
DOC
org.apache.poi.hwpf.extractor.WordExtractor
这个类只能处理word 2003文档(.doc)
(1) 使用ExtractorFactory.createExtractor(InputStream) 创建抽取对象,返回的是公共接口对象,因此强制转换
InputStream fis = new FileInputStream(filePath);
WorderExtractor extractor = (WordExtractor) ExtractorFactory.createExtractor(fis);
(2) 使用WordExtractor创建抽取对象
介绍一下最后两种:
最后第二种接收InputStream来创建对象;
最后一种接收POIFSFileSystem来创建对象:
POIFSFileSystem也接收InputStream来接收对象。
回过头来看看最后第三个构造函数,接收HWPFDocument来创建对象;
而HWPFDDocument通过接收InputStream或者POIFSFileSystem来创建对象。
DOCX
org.apache.poi.POITextExtractor
org.apache.poi.POIXMLTextExtractor
org.apache.poi.xwpf.extractor.XWPFWordExtractor
这个类能够处理excel2007+(.docx)
(1)该类对象的父类可以使用ExtratorFactory生成,但需要接收的参数是个virtual 对象OPCPackage,该对象不好确定。因此我们直接使用(2)中的方法创建对象
(2)新建XWPFWordExtractor对象
我们使用第二个构造函数,通过接收XWPFDocument对象来创建