文章目录
- 1.EXCEL模板数据格式、导入结果展示
- 2.避坑防雷招待所[♥]
- 3.在线获取代码及模板
- 4.手把手操作慢放
- 5.修改测试demo中模板的读取路径
- 6.右键运行测试
- 7.表演完毕,欢迎下次光临
1.EXCEL模板数据格式、导入结果展示
➸ 模板数据格式
➸ 导入结果
2.避坑防雷招待所[♥]
2.1.与poi-Jar包文件版本冲突
报错信息:
com.alibaba.excel.exception.ExcelAnalysisException:
java.lang.NoSuchMethodError: org.apache.poi.util.POILogger.log(ILjava/lang/Object;Ljava/lang/Throwable;)V
解决方案:
在pom.xml文件中找到 标签所引的依赖中,是否包含appach的poi-jar包,可通过通过按住鼠标,【Ctrl+左键】进入存在嫌疑的依赖文件中,查看是否有引入,如果有则使用标签,将重复的与easyexcel内冲突的或版本相同的过滤掉即可。如下:
<dependency>
<groupId>xx.xx</groupId>
<artifactId>xx-xx-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
</exclusion>
<exclusion>
<groupId>xx.xx.xx</groupId>
<artifactId>xx-xx</artifactId>
</exclusion>
</exclusions>
</dependency>
2.2.传入后台读取文件流报空指针
当demo整合到web项目传入文件时,不能用变量接住文件流,不然后续读取的流对象始终是同一个,再次读取则是空指针。因为多个sheet页会循环读取,每读取一个sheet页,会自动将数据映射到实体类,我们需要再深克隆到实体对象中,再清空本次读取的数据,避免下次读取数据出现重复数据,然后再继续获取下一个sheet页的数据,就不会报空指针。
3.在线获取代码及模板
3.1.Github获取
3.2.CSDN下载
文件名 | 操作 |
---|---|
Easyexcel-批量导入模板-Sheet页内有多个标题行.xlsx | 下载 |
Java使用Easyexcel批量导入多行表头的Demo.rar | 下载 |
4.手把手操作慢放
4.1.准备开发环境
开发工具 | IDEA_2020.3 |
---|---|
JDK版本 | 1.8.0_60 |
Maven版本 | apache-maven-3.6.0 |
Maven仓库地址 | http://maven.aliyun.com/nexus/content/groups/public/ |
4.2.启动IDEA,新建项目[File->New->Project]
4.3.点击Maven后,选择Project SDK[JDK版本],点击Next
4.4.填写好项目名称-包名-版本信息后,点击Finish
4.5.项目目录结构及文件介绍
4.6.配置Maven依赖
4.6.1.复制下面代码块中的依赖配置,粘贴到pom.xml中
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!--slf4j日志打印依赖的版本号-->
<slf4j.log4j.version>1.7.25</slf4j.log4j.version>
</properties>
<dependencies>
<!--easyexcel-配置依赖项-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.0-beta2</version>
</dependency>
<!--slf4j日志打印-配置依赖项-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.log4j.version}</version>
<scope>compile</scope>
</dependency>
<!--easyexcel-单元测试-配置依赖项-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
4.6.2.粘贴后,可对比参考下图中pom.xml配置依赖项
4.7.[src\main\java]目录下文件内容说明
4.7.1.com\ts\demo\listener\FirstHeaderRowListener.java
easyexcel的监听事件-读取sheet页第1个标题行内容。
package com.ts.demo.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.exception.ExcelDataConvertException;
import com.ts.demo.po.FirstHeaderPo;
import org.apache.log4j.Logger;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>Title: 监听读取第1个标题行内容 </p>
*
* <p>Description: 监听读取第1个标题行内容 </p>
*
* <p>Copyright: Copyright bn(c) 2021</p>
*
* <p>Company: XX科技公司 </p>
*
* @author tansir
* @version 1.0
*/
public class FirstHeaderRowListener extends AnalysisEventListener<FirstHeaderPo> {
/**
* 日志
*/
private Logger log = Logger.getLogger(FirstHeaderRowListener.class);
/**
* 行索引(多行表头)
*/
private static