是否有一个公共类和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包的用途)。
答案 0 :(得分:1)
两个选项
首先,如果你真的想坚持旧的Apache POI文本提取器,那么使用ExtractorFactory class。这将识别类型,并为您创建一个提取器
然而,更好的选择 - Apache Tika。 Tika建立在POI(以及许多其他人)之上,并为您提供各种文件格式的纯文本提取(+检测+ xhtml +更多!)。您只需致电Tika,询问文本,无论类型如何,都可以将其取回。请参阅Tika examples like this one开始使用