2

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

线程“主”java.lang.IllegalAccessError 中的异常:试图从 org.apache.poi.xssf 的类 org.apache.poi.xssf.eventusermodel.XSSFBReader 访问字段 org.apache.poi.xssf.eventusermodel.XSSFReader.pkg .eventusermodel.XSSFBReader.getXSSFBStylesTable(XSSFBReader.java:78) 在 org.apache.poi.xssf.extractor.XSSFBEventBasedExcelExtractor.getText(XSSFBEventBasedExcelExtractor.java:122) 在 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());
}
4

2 回答 2

0

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

于 2017-06-27T18:55:03.220 回答
0

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

试图 从类org.apache.poi.xssf.eventusermodel.XSSFBReader 访问字段 org.apache.poi.xssf.eventusermodel.XSSFReader.pkg

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());
}

此外,您可能希望在使用 Apache POI 读取 xlsb 文件时检查此问题,其中 OP 使用了几乎类似的代码,并稍加添加以达到所需的结果。

于 2017-06-27T18:22:06.180 回答