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

是否有一个共同的类和ExcelExtractor接口的实现,统一处理来自xls和xlsx源文本的提取? 也许,在ss包的东西。

我正在寻找一些能够让我做类似的事情,但是通过从工厂获得正确的实现,基于文件types。

现在,我不得不明确地使用xls文件的org.apache.poi.xssf.extractor.XSSFExcelExtractor和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包的用途)。

两个选项

首先,如果你真的想坚持使用旧的Apache POI文本提取器,那么使用ExtractorFactory类 。 这将确定types,并为您创build一个提取器

但是,更好的select – Apache Tika 。 Tikabuild立在POI(以及其他许多)的基础之上,并且为您提供来自各种文件格式的纯文本提取(+ detection + xhtml + more!)。 你只要打电话给Tika,索要文字,无论types如何都可以拿回来。 看到像这个Tika例子开始