• 异常: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

       

    总结

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

  • 相关阅读:
    [BFS][链表][二分][STL]JZOJ 5875 听我说,海蜗牛
    [SPFA]JZOJ 5869 绿洲
    [Splay]Luogu 3960 NOIP2017 列队
    [扩欧]JZOJ 5855 吃蛋糕
    [模拟退火][堆优化Prim]2017TG Day2 T2 宝藏
    [并查集]奶酪
    [容斥]JZOJ 5843 b
    JS Undefined 类型
    Python logging 模块
    14.浏览器屏幕缩放bug修复
  • 原文地址:https://www.cnblogs.com/mvilplss/p/6101676.html
Copyright © 2020-2023  润新知