是否有统一的ExcelExtractor类和xls和xlsx文件的工厂?

时间:2015-09-30 17:54:13

标签: java excel apache-poi

是否有一个公共类和ExcelExtractor接口的实现,可以统一处理从xls和xlsx源中提取文本? 也许,ss包中的内容。

我正在寻找可以让我做类似事情的东西,但是根据文件类型从工厂获得正确的实现。

现在,我必须明确使用org.apache.poi.hssf.extractor.ExcelExtractor 对于xls文件,对于xlsx为org.apache.poi.xssf.extractor.XSSFExcelExtractor

例如,xls的显式方法:

InputStream inp = new FileInputStream(path);
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
ExcelExtractor extractor = new ExcelExtractor(wb);

extractor.setFormulasNotResults(true);
extractor.setIncludeSheetNames(false);
String text = extractor.getText();

我可以实现自己的工厂,但在我这样做之前,我想问一下是否有一种处理两种格式的通用方法(即ss包的用途)。

1 个答案:

答案 0 :(得分:1)

两个选项

首先,如果你真的想坚持旧的Apache POI文本提取器,那么使用ExtractorFactory class。这将识别类型,并为您创建一个提取器

然而,更好的选择 - Apache Tika。 Tika建立在POI(以及许多其他人)之上,并为您提供各种文件格式的纯文本提取(+检测+ xhtml +更多!)。您只需致电Tika,询问文本,无论类型如何,都可以将其取回。请参阅Tika examples like this one开始使用