关于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表头的说明相关推荐

  1. Matlab中读取excel表格数据

    一:Matlab中读取excel表格数据步骤讲解: 第二步:  第三步:  第四步:  第五步:  第六步    第七步:  输入之后按回车键,就会出现相应的波形: 效果图:

  2. R语言中读取excel数据的常用方式有哪些?

    R语言中读取excel数据的常用方式有哪些? 目录 R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R语言中读取excel数据的常用方式有哪些? R语言是解决什么问题的? R ...

  3. java 从excel中读取数据_在Java中读取Excel文件的内容和导出数据到Excel文件中

    转自www.chianjavaworld.net 原作者:SonyMusic 读:rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr 在Java ...

  4. easyexcel 检查表头是否匹配_Java EasyExcel读取Excel表头数据的方法及示例代码

    1、读取表头数据代码/** * 读取表头数据 * * * 1. 创建excel对应的实体对象 参照{@link DemoData} * * 2. 由于默认异步读取excel,所以需要创建excel一行 ...

  5. EasyExcel:读取Excel数据到List集合中

    1. pom.xml 添加依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyex ...

  6. 解决EasyExcel工具读取Excel空数据行的问题

    EasyExcel是Alibaba开源的一个Java处理Excel的工具. 官网解读:快速.简洁.解决大文件内存溢出的java处理Excel工具 快速 快速的读取excel中的数据. 简洁 映射exc ...

  7. 表头让你头疼?看这几招解决Pandas读取Excel表头的问题

    在数据分析工作中,我们经常需要读取Excel数据.但是当Excel表格中存在多级表头或合并单元格时,使用Pandas读取数据就会出现错误,无法准确识别表头.在此分享几个解决这个问题的实用方法,希望能帮 ...

  8. EasyExcel轻松读取Excel文件!

    EasyExcel是一个Java库,用于快速.简单地读写Excel文件.要使用EasyExcel,您首先需要将其添加为项目的依赖: 如果使用Maven,可以添加以下依赖项: <dependenc ...

  9. 阿里EasyExcel入门——读取excel

    EasyExcel是18年3月份左右发布的,刚刚发布就是打着"低内存"解决POI的oom的口号.经过一年版本迭代现在最新版是1.1.2-beta4 GitHub地址https:// ...

最新文章

  1. vue.js学习系列-第二篇
  2. C/C++语言参数传递----函数/方法 参数的指针引用传递
  3. windows update失败还原更改,无法开机
  4. 《多元统计分析》学习笔记之主成分分析
  5. Python实现局域网(Socket)通信
  6. 2021-08-09 idea -- Mysql 增删改查
  7. windows10 + centos7 双系统
  8. 企业信用评分卡模型实战(python,附代码)
  9. XPOSED框架下载地址
  10. 7天快速掌握MySQL-DAY5
  11. IIS搭建本地服务器,花生壳实现外网通过域名访问网站
  12. 旋翼无人机及摄影测量基础
  13. MATLAB 错误使用 instfreq TFD 应“非负”
  14. 如何永久关闭笔记本键盘
  15. c-lightning 闪电网络配置洋葱服务(tor)
  16. 小程序模板报价_小程序模板价格_小程序模板使用多少钱
  17. 【数据库原理与应用MySQL版】实验指导
  18. 顺序表的c语言结构体描述,顺序表的基本方法实现C语言版
  19. pandas级联与合并
  20. git拉取代码出现Unpacking objects

热门文章

  1. U盘中文件复制到ARM开发板
  2. windows下命令启动mysql服务
  3. 上海疯狂神途 适用于android设备,上海疯狂神途
  4. QRCode 生成和下载二维码
  5. element Form组件封装
  6. JDK发展历史以及版本特性
  7. List集合按照某个字段或者属性分组的两种方式
  8. 优酷背后的大数据秘密【大数据开发实战技术】
  9. MySQL数据库getdate_数据库getdate函数
  10. 2022年轩灵大前端知识体系王牌打造计划