想实现excel文件内容读取到数据库中,而且excel是存在合并单元格这种情况的,便考虑借助EasyExcel来实现
前置操作
因为要使用EasyExcel,所以在pom.xml中引入EasyExcel和poi相关依赖
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.6</version>
</dependency>
</dependencies>
<!-- 管理子项目中引用的依赖的版本 -->
<dependencyManagement>
<dependencies>
<!--只是声明,没有导入-->
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>4.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</dependencyManagement>
问题
运行代码时,发现报错如下
com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoClassDefFoundError: org/apache/poi/POIXMLTypeLoader
原因
因为之前项目的pom里引入过poi-ooxml版本是4.0.0,所以直接引了过来,实际应该看easyexcel依赖中的poi-ooxml版本。
点击easyexcel依赖可以看到poi-ooxml版本是3.17
解决
修改poi-ooxml版本为easyexcel中的版本
如上原因,把poi-ooxml版本替换为3.17,再去运行项目,果然解决了