说明:easyexcel是阿里巴巴提供的,用于项目中读取/导出excel文件的工具,本文介绍使用easyexcel常见的两种错误。
错误一:java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Cell.getCellType()Lorg/apache/poi/ss/usermodel/CellType;
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.poi.openxml4j.util.ZipSecureFile$1 (file:/D:/Program%20Files%20(x86)/apache-maven-3.6.1/mvn_repo/org/apache/poi/poi-ooxml/3.16/poi-ooxml-3.16.jar) to field java.io.FilterInputStream.in
WARNING: Please consider reporting this to the maintainers of org.apache.poi.openxml4j.util.ZipSecureFile$1
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
2023-07-07 21:42:02.599 ERROR 26060 --- [nio-8080-exec-1] c.h.m.exception.SkyGlobalException : java.lang.NoSuchMethodError: org.apache.poi.ss.usermodel.Cell.getCellType()Lorg/apache/poi/ss/usermodel/CellType;
分析:报错信息有提到“org.apache.poi”,是poi与easyexcel产生了冲突;
解决方法:
去掉pom文件中关于poi的依赖,版本控制,和最上面设置的版本号,需要注意仅去掉依赖是不行的
(去掉poi依赖)
(去掉版本控制)
(去掉最上面设置的版本号)
错误二:Resource of path [static/template/2023-07-07.xlsx] not exist!
使用easyexcel的思路是,按照提供的表格模板,把查询下来的数据先填充到excel表中,然后再将填充后的表格下载给用户。有时会出现这样的错误,查询数据后,保存到服务器上的文件是好的,有数据的,但在客户端下载下来的表格是错误的。就像下面这样:
(控制台报错)
(服务器上生成的表格没有问题)
(客户端下载的表格是错误的)
解决方法:模板文件名或者文件路径有中文,把中文去掉,文件名改为英文的
(把模板文件改成英文的,也需要注意该文件的路径存不存在中文)
(修改后,控制台没有报错信息,数据正常显示)
总结
这两个问题可能会同时出现,报错信息可能有所不同(可能会报copy template failure,模板文件未找到),所以如果使用easyexcel有报错后,先按照这两种情况排除。