首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定jXLS 2.3.0需要哪个版本的apache?

如何确定jXLS 2.3.0需要哪个版本的apache?
EN

Stack Overflow用户
提问于 2016-05-13 14:18:40
回答 2查看 2.1K关注 0票数 1

这是我的分级文件:

代码语言:javascript
复制
compile 'org.apache.poi:poi:3.13'
compile 'org.jxls:jxls-jexcel:1.0.6'
compile 'org.jxls:jxls-poi:1.0.9'
compile 'org.jxls:jxls:2.3.0'

看起来我使用了错误版本的apache:

代码语言:javascript
复制
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.template.SimpleExporter.gridExport(SimpleExporter.java:54)

我必须显式地包含另一个依赖项所依赖的依赖项,这难道不是有点奇怪吗?此外,如何才能确定我实际需要哪个版本的依赖项( POI)?

我只是想让简单的出口商样本发挥作用:

代码语言:javascript
复制
   try (InputStream is = CalXlsExporter.class.getResourceAsStream(template)) {
        try (OutputStream os2 = new FileOutputStream("ExportOutput.xlsx")) {

            headers = Arrays.asList(HEADERS);

            Context context = new Context();
            context.putVar("headers", HEADERS);
            context.putVar("cell", cal);

            JxlsHelper.getInstance().processTemplate(is, os2, context); //Exception inside this
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-13 21:28:23

您可以始终查看jxls-poi模块的Maven pom文件,例如,您可以看到jxls-poi-1.0.9包含POI3.12的依赖项,如pom属性部分所定义的那样。

代码语言:javascript
复制
<properties>
  ...
  <poi.version>3.12</poi.version>
  ...  
</properties>

以后的POI版本可能也能工作,但情况并不总是这样,因为它依赖于Apache的向后兼容性。

票数 2
EN

Stack Overflow用户

发布于 2016-05-18 07:20:54

我将尝试简单地删除文件中对POI的依赖,因为jxls将拖动正确版本的POI作为传递依赖项,所以您只需要在应用程序中始终依赖jxl,而且将来的更新不会导致类似的奇怪错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37212422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档