poi依賴版本異常解決方案


背景

  最近公司所有新項目要使用最新高效快速開發框架nature-framework,框架本身結合NatureMap已經集成excel的高效導入功能,我們要實現高性能的導出功能,因為最新的jxls-2.3.0.jar在模版導出上做了很大的優化,所以我們考慮使用最新jxls-2.3.0.jar工具借助最新的poi-3.16.jar進行導出表格。

  悲劇的是我們把官方的所有依賴jar包全部引進,結果卻不能正常使用。。。

 

異常內容

復制代碼
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.getCellStyleAt(S)Lorg/apache/poi/ss/usermodel/CellStyle;
    at org.jxls.transform.poi.PoiTransformer.clearCell(PoiTransformer.java:224)
    at org.jxls.area.XlsArea.clearCells(XlsArea.java:437)
    at org.jxls.builder.xls.XlsCommentAreaBuilder.build(XlsCommentAreaBuilder.java:181)
    at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:100)
    at org.jxls.util.JxlsHelper.processTemplate(JxlsHelper.java:94)
    at com.excel.demo.ExcelExport.main(ExcelExport.java:30)
復制代碼

 

尋找答案

  將原來項目進行改造為maven項目進行自動下載依賴jar包,發現有部分jar包根本下載不下來(國內的大局域網...),無奈放棄。

  后面經過多次的百度和谷歌,以及多次進入stackoverflow未能解決問題,這種異常一般是是缺少jar包或jar包的版本不兼,jar包導入了一大堆未能解決問題,最后就從jar包的版本入手。我們都知道poi是jxls的基礎依賴,所有只可能是poi的版本太高jxls團隊還未來及對其進行兼容,因此下載各個版本的poi進行嘗試,發現3.16,3.15,3.14均不兼容,3.13未嘗試(國內下個jar包慢的不行,用翻牆工具也就幾十k),直接下載了3.12版本,經過測試終於可以使用了!

吐槽:jxls官方在每個版本中從未說明當前依賴poi的版本是多少,所以導致大量Java開發工程師在各個網站上求助此問題的解決方法。

  送上導入導出excel所有必須的jar包:

  1. commons-jexl-2.1.1.jar
  2. commons-logging-1.1.3.jar
  3. jxls-2.3.0.jar
  4. jxls-poi-1.0.9.jar
  5. log4j-1.2.16.jar
  6. poi-3.12-20150511.jar
  7. poi-ooxml-3.12-20150511.jar
  8. poi-ooxml-schemas-3.12-20150511.jar
  9. slf4j-api-1.7.18.jar
  10. slf4j-log4j12-1.7.18.jar
  11. xmlbeans-2.6.0.jar

   

總結

  如果后面在遇到此類異常,請先考慮版本不兼容的問題!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM