前言:
公司准备开展新项目了,但是数据库中还没有数据,数据都在客户提供的excel中,现在领导让我把这些数据快速导入到库中,方便后期开发。一个一个导入效率太慢了,作为一名合格的程序员,应该学会合理摸鱼。那么我是如何实现的呢?答案就是阿里巴巴提供的EasyExcel。现在教大家我是如何使用的。
什么是EasyExcel
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
官方文档: EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel (alibaba.com)
Excel解析流程图:

EasyExcel读取Excel的解析原理:

SpringBoot集成EasyExcel
第一步:引入依赖:
<!--easyexcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.1.3</version>
</dependency>
第二步:创建实体类
@Data
public class Stu implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
@ExcelProperty("姓名")
private String name;
@ExcelProperty("年龄")
private Integer age;
@ExcelProperty("班级")
private String calss;
@ExcelProperty("学校")
private String school;
@ExcelProperty(value = "性别", converter = GenderConverter.class)
private Integer sex;
}
常用注解有:
@ExcelProperty 指定当前字段对应excel中的哪一列。可以根据名字或者Index去匹配。当然也可以不写,默认第一个字段就是index=0,以此类推。千万注意,要么全部不写,要么全部用index

本文介绍了如何在SpringBoot项目中利用EasyExcel进行高效、内存友好的Excel数据导入和导出,包括步骤、实体类配置、性别转换器和自定义监听器的应用,以提升开发效率并减少内存消耗。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



