Apache Poi 4.1.2 和 net.sf.jxls (jxls-core 1.0.6) 之间的兼容性

问题描述

我需要知道标题中提到的那些库是否相互兼容。 我需要做的是更改库:从 net.sf.jxlsorg.jxls 2.10.0(并因此调整使用 jxls 核心 1.0.6)。我正在使用 Java 8。

根据我需要适配的实现,jxls首先被实例化和XLSTransformer对象使用:XLSTransformertransformer = new XLSTransformer(); 然后,调用方法“transformXLS(...)”,它接收一个 InputStream 作为参数和一个 Map,并返回一个 Workbook 对象

在 jxls 2.10.0 中是否有类似的方法或某种“解决方法”来执行完全相同的操作?我需要知道的是一种使用 jxls 2.10.0 返回 Workbook 对象的方法,以适应使用 jxls-core 1.0.6 完成的实现

解决方法

虽然 jxls1 不直接支持 POI4,但很容易为此目的对其进行修改。

您基本上必须编辑这些类(在 jxls-core 中):

  • net/sf/jxls/parser/Cell.java
  • net/sf/jxls/parser/CellParser.java
  • net/sf/jxls/transformer/CellTransformer.java
  • net/sf/jxls/transformer/XLSTransformer.java
  • net/sf/jxls/util/TagBodyHelper.java
  • net/sf/jxls/util/Util.java

您需要对它们进行细微更改,例如:

XLSTransformer.java:第 484 行,更改

if (cell != null && cell.getCellType() == Cell.CELL_TYPE_STRING) {

if (cell != null && cell.getCellType() == CellType.STRING) {

所以基本上所有的变化都是微小的变化。 您可以在此处找到支持 POI 4 的 jxls1 代码:https://github.com/infofabrik/reportserver/tree/main/jxls-src

我们也在努力将此代码发送给 jxls 团队。但您当然可以使用链接中提供的课程。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...