e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

背景

  最近公司所有新项目要使用最新高效快速开发框架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包慢的不行,用FQ工具也就几十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

   

总结

  如果后面在遇到此类异常,请先考虑版本不兼容的问题!

 

posted on 2019-09-06 20:13  纯黑Se丶  阅读(3153)  评论(0编辑  收藏  举报