![](/img/trans.png)
[英]apache poi 4.X, 5.X with net.sf.jxls.jxls-core causes java.lang.NoSuch MethodError: org.apache.poi.ss.usermodel.cell.getCellType() error
[英]Compatibility between Apache Poi 4.1.2 and net.sf.jxls (jxls-core 1.0.6)
我需要知道標題中提到的那些庫是否相互兼容。 我需要做的是更改庫:從net.sf.jxls到org.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 中):
您需要對它們進行細微更改,例如:
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.