问题描述
我需要知道标题中提到的那些库是否相互兼容。 我需要做的是更改库:从 net.sf.jxls 到 org.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 团队。但您当然可以使用链接中提供的课程。