簡體   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