EasyExcel 是什么
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 64M内存1分钟内读取75M(46W行25列)的Excel,当然还有急速模式能更快,但是内存占用会在100M多一点
spring boot stater依赖
- 方便在 web 环境下使用 easyexcel ,已上传至 maven 仓库。源码地址:excel-spring-boot-starter
使用方法
- ① 只需要在 Controller 层返注入对应的表格的实体即可,增加 @RequestExcel注解即可
/*
@param dataList 使用 @RequestExcel 声明注入的 List
@param bindingResult 获取excel 校验失败的数据
@return
*/
@PostMapping
public String req(@RequestExcel List
// 获取失败的数据
Map
return “success”;
}
- ② 使用注解 @ExcelProperty 指定实体对应 excel列 (序号从0开始),当然也可以指定 @ExcelProperty(“列标题”) 的形式使用。
@Data
public class DemoData {
@NotBlank(message = “用户名字段不能为空”)
@ExcelProperty(index = 0)
private String username;
@NotBlank(message = "密码字段不能为空")<br /> @ExcelProperty(index = 1)<br /> private String password;<br />}
postman 调用测试
前端上传代码
- ① 新增导入按钮
size=”small”
icon=”el-icon-download”
@click=”handleImport(scope.row, scope.index)”
>导入
- ② 导入对话框
:limit=”1”
accept=”.xlsx, .xls”
:headers=”upload.headers”
:action=”upload.url”
:disabled=”upload.isUploading”
:on-progress=”handleFileUploadProgress”
:on-success=”handleFileSuccess”
:auto-upload=”false”
drag
>
将文件拖到此处,或
点击上传
- ③ 初始化导入参数
import store from “@/store”;
export default {
name: “sys-file”,
data() {
return {
upload: {
open: false,
title: “”,
isUploading: false,
headers: { Authorization: “Bearer “ + store.getters.access_token },
url: “/admin/user/importExcel”
},
};
}
}
- ④ 导入方法
handleImport() {
this.upload.title = “用户导入”;
this.upload.open = true;
},
// 文件上传中处理
handleFileUploadProgress() {
this.upload.isUploading = true;
},
// 文件上传成功处理
handleFileSuccess() {
this.upload.open = false;
this.upload.isUploading = false;
this.$refs.upload.clearFiles();
this.$message.success(“导入成功”);
this.getList(this.page);
},
// 提交上传文件
submitFileForm() {
this.$refs.upload.submit();
}
其他用法
- 理论上支持 alibaba/easyexcel v2.2.6 版本的大部分配置
- 支持 alibaba/easyexcel 原生的配置注解
