zoukankan      html  css  js  c++  java
  • 异常:java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Workbook.getCellStyleAt

    背景

      最近公司所有新项目要使用最新高效快速开发框架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

       

    总结

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

  • 相关阅读:
    1010考试T1
    P5631 最小mex生成树 分治 并查集
    P4366 [Code+#4]最短路 建图 最短路
    P1654 OSU! 期望概率DP
    7.26集训
    7.25集训
    7.23集训
    7.22集训
    7.21test
    7.12test
  • 原文地址:https://www.cnblogs.com/mvilplss/p/6101676.html
Copyright © 2011-2022 走看看