繁体   English   中英

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

[英]Compatibility between Apache Poi 4.1.2 and net.sf.jxls (jxls-core 1.0.6)

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

根据我需要适应的实现,首先实例化和XLSTransformer使用jxls object: XLSTransformer transformer = new XLSTransformer(); 然后,调用方法“ transformXLS(...) ”,接收InputStream 作为参数和 Map,并返回工作簿 object

jxls 2.10.0 中是否有类似的方法或某种“解决方法”来执行完全相同的操作? 我需要知道的是一种使用 jxls 2.10.0 返回工作簿 object 的方法,以适应使用 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
  • 网络/sf/jxls/transformer/XLSTransformer.java
  • 网络/sf/jxls/util/TagBodyHelper.java
  • 网络/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 团队。 但是您当然可以使用链接中提供的课程。

我最近还从 JXLS 的 1.x 升级到 2.x 并遇到了这个问题。 我使用此代码获取 Excel 文件的输入 stream,然后使用 <String, Object> 条目的 Map 处理模板,最后检索工作簿。

PoiTransformer transformer = PoiTransformer.createTransformer(is);
JxlsHelper.getInstance().processTemplate(new Context(yourStringObjectMap), transformer);
Workbook workbook = transformer.getWorkbook();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM