前言
为解决文件导入导出出现内存占用高、处理速度慢等问题,本文旨在详细着重介绍EasyExcel基本使用方法以及功能优化分析,结合实际运用代码,在注释中描述清晰的业务逻辑,帮助读者轻松上手并高效利用该框架处理Excel文件,文章分为2个部分:
(1)EasyExcel的使用方法与熟悉读写监听器运行机制。
(2)从多线程并发角度与数据库优化出发,更深层次解析EasyExcel使用场景,为更好的匹配项目中的需求。
(3)分析EasyExcel新功能,从实际业务出发,允许开发者在读写过程中对其自定义优化。
目录
一、背景说明
EasyExcel是一个基于Java的、快速、简洁、解决大文件内存溢出的Excel处理工具。不用考虑性能、内存的等因素,能够快速完成Excel的读、写等功能。
- 技术文档:https://easyexcel.opensource.alibaba.com/docs/current/
- B站地址:https://www.bilibili.com/video/BV1bF411D7M8
- gitee地址:https://gitee.com/easyexcel/easyexcel
二、基本用法
1、引入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.7</version>
</dependency>
2、读数据
1.1前端
(1)文件上传按钮
<div class="layui-btn-container">
<button type="button" class="layui-btn" id="test3">
<i class="layui-icon"></i>上传文件
</button>
</div>
(2)导入按钮点击事件-----基于LayUi的方式
layui.use(['upload', 'element', 'layer'], function() {
var $ = layui.jquery
, upload = layui.upload
, layer = layui.layer;
upload.render({
elem: '#test3'
, url: '/import' //此处配置你自己的上传接口即可
, accept: 'file' //普通文件
, done: function (res) {
layer.msg(res.msg);
text() // 对导入成功的数据进行展示
}
});
1.2后端
(1)实体类定义
@Data
public class Student{ //学生数据传输对象
@ExcelProperty("序号")
private Integer id;
@ExcelProperty("编号")
private Integer number; //学生编号
@ExcelProperty("姓名")
private String name; //姓名
@ExcelProperty("年龄")
private Integer age; //年龄
@ExcelProperty("时间")
private String time; //入学时间
}
@ExcelProperty注解:用于指定Excel中的列与Java实体类字段之间的映射关系。
(2)数据访问层