关于easyExcel中读取Excel表头的说明
关于easyExcel中读取Excel表头的说明
- 1 环境准备
- 2 单表头Excel
- 3 多表头Excel
- 4 总结
在使用easyExcel读取文件时,对于Excel的表头,在解析读取时分成不同的状态,需要加以区分.
1 环境准备
准备一个可以正常访问的SpringBoot项目.
1 添加pom
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency>
2 添加dto对象
// 表格对应实体类
@Data
public class EasyExcelDemo {@ExcelProperty("标题")private String string;@ExcelProperty("日期")private Date date;@ExcelProperty("金额")private Double money;/*** 忽略这个字段*/@ExcelIgnoreprivate String name;
}
// 返回对象
@Data
public class Resp {private List<EasyExcelDemo> importList;}
3 准备一个控制器
@RestController
@RequestMapping("/easyExcel")
@Slf4j
public class EasyExcelController {@PostMapping("/upload")public void upload(@RequestParam("file") MultipartFile file) throws IOException {// 读取Excel EasyExcel.read(file.getInputStream(), EasyExcelDemo.class,new EasyExcelListener()).sheet().headRowNumber(1).doRead();// 从监听中获取结果集Resp resp = EasyExcelListener.RESP.get();List<EasyExcelDemo> importList = resp.getImportList();log.info("导入集合 list = {}", importList);// 清除数据EasyExcelListener.RESP.remove();}}
4 准备一个监听类
@Slf4j
public class EasyExcelListener extends AnalysisEventListener<EasyExcelDemo> {public static List<EasyExcelDemo> importList = new ArrayList<>();public static final ThreadLocal<Resp> RESP = new ThreadLocal<>();@Overridepublic void invoke(EasyExcelDemo data, AnalysisContext context) {log.info("解析到的一条数据: excelRow = {}", data);importList.add(data);}@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 解析完所有excel行, 保存到数据库或进行业务处理log.info("解析的所有数据 list = {}", importList);Resp resp = new Resp();resp.setImportList(importList);RESP.set(resp);}@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {log.info("表头数据 excelHead= {}", headMap);}
}
2 单表头Excel
单表头Excel, 即Excel的表头只有一行.
如上单行表头, 在读取时,在EasyExcel读取时设置headRowNumber属性,表示Excel的表头的行数,默认为1,设置为1时,表示第一行是表头,从第二行是表数据
EasyExcel.read(file.getInputStream(), EasyExcelDemo.class,new EasyExcelListener()).sheet().headRowNumber(1).doRead();
使用postman上传excel查看结果:
读取到Excel的表头
读取到Excel的表数据
3 多表头Excel
多表头Excel, 即Excel的表头有多行.
如上单行表头, 在读取时,在EasyExcel读取时设置headRowNumber属性,表示Excel的表头的行数,设置为2时,表示第二和之前行都是表头.
EasyExcel.read(file.getInputStream(), EasyExcelDemo.class,new EasyExcelListener()).sheet().headRowNumber(2).doRead();
使用postman上传excel查看结果:
读取到Excel的表头, 读取到第一行
接着读取表头第二行
读取到Excel的表数据
4 总结
关于EasyExcel的表格读取,使用起来比较方便,但是对于多表头和单表头的读取,需要注意,是按照一层层的解析的.即再一些特殊的场景,需要校验表格的表头是否正确等, 要注意多表头的读取按照行数顺序读取数据.
关于easyExcel中读取Excel表头的说明相关推荐
- Matlab中读取excel表格数据
一:Matlab中读取excel表格数据步骤讲解: 第二步: 第三步: 第四步: 第五步: 第六步 第七步: 输入之后按回车键,就会出现相应的波形: 效果图:
- R语言中读取excel数据的常用方式有哪些?
R语言中读取excel数据的常用方式有哪些? 目录 R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R ...
- java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中
转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...
- easyexcel 检查表头是否匹配_Java EasyExcel读取Excel表头数据的方法及示例代码
1、读取表头数据代码/** * 读取表头数据 * * * 1. 创建excel对应的实体对象 参照{@link DemoData} * * 2. 由于默认异步读取excel,所以需要创建excel一行 ...
- EasyExcel:读取Excel数据到List集合中
1. pom.xml 添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyex ...
- 解决EasyExcel工具读取Excel空数据行的问题
EasyExcel是Alibaba开源的一个Java处理Excel的工具. 官网解读:快速.简洁.解决大文件内存溢出的java处理Excel工具 快速 快速的读取excel中的数据. 简洁 映射exc ...
- 表头让你头疼?看这几招解决Pandas读取Excel表头的问题
在数据分析工作中,我们经常需要读取Excel数据.但是当Excel表格中存在多级表头或合并单元格时,使用Pandas读取数据就会出现错误,无法准确识别表头.在此分享几个解决这个问题的实用方法,希望能帮 ...
- EasyExcel轻松读取Excel文件!
EasyExcel是一个Java库,用于快速.简单地读写Excel文件.要使用EasyExcel,您首先需要将其添加为项目的依赖: 如果使用Maven,可以添加以下依赖项: <dependenc ...
- 阿里EasyExcel入门——读取excel
EasyExcel是18年3月份左右发布的,刚刚发布就是打着"低内存"解决POI的oom的口号.经过一年版本迭代现在最新版是1.1.2-beta4 GitHub地址https:// ...
最新文章
- vue.js学习系列-第二篇
- C/C++语言参数传递----函数/方法 参数的指针引用传递
- windows update失败还原更改,无法开机
- 《多元统计分析》学习笔记之主成分分析
- Python实现局域网(Socket)通信
- 2021-08-09 idea -- Mysql 增删改查
- windows10 + centos7 双系统
- 企业信用评分卡模型实战(python,附代码)
- XPOSED框架下载地址
- 7天快速掌握MySQL-DAY5
- IIS搭建本地服务器,花生壳实现外网通过域名访问网站
- 旋翼无人机及摄影测量基础
- MATLAB 错误使用 instfreq TFD 应“非负”
- 如何永久关闭笔记本键盘
- c-lightning 闪电网络配置洋葱服务(tor)
- 小程序模板报价_小程序模板价格_小程序模板使用多少钱
- 【数据库原理与应用MySQL版】实验指导
- 顺序表的c语言结构体描述,顺序表的基本方法实现C语言版
- pandas级联与合并
- git拉取代码出现Unpacking objects