首页 > 解决方案 > Displaytag 1.2 导出到 Excel:JAR 冲突:java.lang.NoSuchMethodError:'void org.apache.poi.hssf.usermodel.HSSFCell.setCellValue'

问题描述

在我的 Struts2 应用程序中,我使用Displaytag 1.2来导出Excel XLSX文件,使用提供的org.displaytag.export.excel.DefaultHssfExportView实现。

我得到的错误是:

Caused by: java.lang.NoSuchMethodError: 'void org.apache.poi.hssf.usermodel.HSSFCell.setCellValue(org.apache.poi.hssf.usermodel.HSSFRichTextString)'
    at org.displaytag.render.HssfTableWriter.writeHeaderFooter(HssfTableWriter.java:324)
    at org.displaytag.render.HssfTableWriter.writeTableHeader(HssfTableWriter.java:151)
    at org.displaytag.render.TableWriterTemplate.writeTable(TableWriterTemplate.java:125)
    at org.displaytag.export.excel.DefaultHssfExportView.doExport(DefaultHssfExportView.java:49)

这是某种图书馆冲突setCellValue(HSSFRichTextString)。详情如下:

displaytag.properties(注意我们正在导出 Excel)

export.xml=false
export.excel=true
export.excel.class=org.displaytag.export.excel.DefaultHssfExportView
export.csv=false
export.pdf=false
export.excel.filename=ets.xls
export.decorated=false
export.banner=<div id="export_banner"><b><i>Export options:</i></b> {0}</div>
export.banner.placement=both

Java App 中的库列表

关于 Displaytag

displaytag-1.2.jar
displaytag-export-poi-1.2.jar
poi-3.16.jar
sfl4j-api-1.7.12.jar
sfl4j-nop-1.6.1.jar

Struts、Spring、Commons等

commons-io-2.2.jar
commons-lang-2.4.jar
commons-lang3-3.2.jar
commons-logging-1.1.3.jar
commons-logging-api-1.1.jar
log4j-1.2.9.jar
org.springframework.aop-3.0.5.RELEASE.jar (+ asm, aspects, beans, context, core, web, web.struts)
struts2-core-2.3.37.jar (+ dojo, jquery, spring-plugin, tiles-plugin)
velocity-1.6.4.jar
tiles-api-2.2.2.jar (+ core, el, jsp, ognl, servlet)

标签: web-applicationsapache-poixlsdisplaytag

解决方案


这个问题的解决方案是使用POI 3.2(文件:poi-3.2-FINAL.jar)。我使用的是 3.16,不得不降级。

这是另一个关于必须使用这个特定的旧 POI 版本的线程: https ://stackoverflow.com/a/23538224/1005607


推荐阅读