读取 xlsb 文件会引发错误 - java poi

Reading xlsb files throws error - java poi

我正在尝试使用 Apache POI 并遇到以下异常:

Exception in thread "main" java.lang.IllegalAccessError: tried to access field org.apache.poi.xssf.eventusermodel.XSSFReader.pkg from class org.apache.poi.xssf.eventusermodel.XSSFBReader at org.apache.poi.xssf.eventusermodel.XSSFBReader.getXSSFBStylesTable(XSSFBReader.java:78) at org.apache.poi.xssf.extractor.XSSFBEventBasedExcelExtractor.getText(XSSFBEventBasedExcelExtractor.java:122) at xlsbpar.XlsbPar.main(XlsbPar.java:38)

这是我的代码:

XSSFBEventBasedExcelExtractor ext = null;
try {
    ext = new XSSFBEventBasedExcelExtractor("C:\Users\name\Desktop\abc.xlsb");
    System.out.println(ext.getText());
} catch (Exception ex) {
    System.out.println(ex.getMessage());
}

您需要使用 XSSFEventBasedExcelExtractor(需要 poi-ooxml-x.y.jar 作为外部库,其中 x.y 代表版本),因为错误本身指出:

tried to access field org.apache.poi.xssf.eventusermodel.XSSFReader.pkg from class org.apache.poi.xssf.eventusermodel.XSSFBReader.

XSSFEventBasedExcelExtractor ext = null;
try {
    ext = new XSSFEventBasedExcelExtractor("C:\Users\name\Desktop\abc.xlsb");
    System.out.println(ext.getText());

} catch (Exception ex) {
    System.out.println(ex.getMessage());
}

此外,您可能想查看 this question on reading xlsb file using Apache POI OP 在何处使用了几乎相似的代码并略加添加以实现所需的结果。

下面的代码片段非常适合 XLSB 解析 Reading XLSB file with Apache POI @AM_I_Helpful 暗示