EasyExcelDemo
官网:https://easyexcel.opensource.alibaba.com/
demo 代码:
github:ishuaige/easyExcelDemo: easyExcel 的 Demo (github.com)
gitee:easyExcelDemo: easyExcel 的小 demo (gitee.com)
一.准备工作
- 导入数据库文件
- 我们做一个类似积分系统,数据库包含用户名,上月积分和当前积分
1 |
|
- 创建一个 springboot 工程
- 依赖 springboot 2.7.7
1 |
|
1 | spring: |
- 创建好操作数据的 model、mapper、service
- 使用 mybatis X 插件创建
这里不赘述以上技术的玩法哈
二.简单的写
主要 api: EasyExcel.write()
- 导入 easyExcel 和 fastjson 的依赖,上面的依赖中已有
- 定义 excel 的表头
- 我们在这里自己算出增长积分
- @ExcelProperty(“姓名”) 声明表头,在代码中变量不好取中文,就可以使用注解声明
1 | package com.niuma.easyexceldemo.excel.model; |
- 编写测试类
1 |
|
- 其实就是调用
EasyExcel.write()
这个 api,参数是路径名,表头- 链式调用
sheet()
,可以声明页信息,如页号,页名 dowrite()
,执行写操作,参数填入数据集
- 链式调用
- 校验结果
- 在对应的路径下就可以看到导出的 excel 表
三.简单的读
在导入依赖和定义了表头后开始读操作的编写测试
大概意思:服务端要接收到 excel,我们需要知道
excel 文件:通过网络或本地路径(对谁做?)
表头字段:转换成对象(什么样子?面向对象)
监听器:定义读取数据后的处理方式(做什么?)
- 定义 Listeners 监听器,注意这里处理数据的方法,防止 OOM
- 实现 ReadListener<DataType>接口,泛型自然就是表头的字段
- 实现 2 个主要方法
- invoke(ExcelUserData excelUserData, AnalysisContext analysisContext):每读到一条数据都会调用这个函数,可以在这里对数据的预处理,比如将读到的 ExcelUserData 转换成数据库的 User
- doAfterAllAnalysed(AnalysisContext analysisContext):所有数据解析完成了 都会来调用 做收尾工作,确保最后遗留的数据也持久化(存储到数据库)
1 | package com.niuma.easyexceldemo.excel.listeners; |
- 测试
1 |
|
- 主要调用 api:
EasyExcel.read()
参数就是前面我们需要知道的三个东西。链式调用 sheet 同写
- 检验结果
四.web 接口调用
① 上传 excel 并解析
- 解析逻辑在 Listener 里,这里演示只做日志打印
1 |
|
② 下载文件
- 用 swagger 不好使,直接在浏览器输入地址就好了
- 这里应该将大段逻辑放到 service 中,只不过作演示方便
1 | /** |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 coderbin!