questions:
- 它在项目是处理什么问题的?
- 处理上传的 excel 文件,直接从文件读取信息
- 大概写法是什么?
- 对于团队有什么好处?
- 方便,快捷
- 有没有其他的替代方案
- 之前的 apache.poi、jxl?不过这些技术的问题就是比较消耗内存。那么在系统的并发量上来之后就會频繁地 full gc
- 什么是 full gc:https://blog.csdn.net/kep159/article/details/103088438
- 替代了什么老的技术,解决了老技术的什么问题?(备选)
- 引入依赖;EasyExcel 的功能实现是建立在 apache.poi 的基础之上的(所以在 webedu 项目之中才会在父项目 pom 的 dependencyManagement 中明确该两个依赖的版本要求)
- 创建 listener 继承 AnalysisEventListener,设置数据读取之后的操作
- 重写其中的 invoke() 和 doAfterAllAnalysed() 方法
- invoke() 负责对每一条记录进行处理,参数 Object 就是读取到的记录
- doAfterAllAnalysed() 应该是定义所有读取完成之后的操作
- 需注意:因为 Listener 在实际操作中需要通过构造方法 new 出来,所以不能交由 IoC 容器管理,那就导致 Listener 中也不能调用 IoC 容器中的对象;所以在要通过 Bean 中的方法将读取到的记录写入进数据库时,可以将该 Bean 以构造方法参数的形式传递到 Listener 中
- 创建 entity 对应 excel 中的记录,方便读取信息
- entity 类中的属性可以添加注解 @ExcelProperty( value = ) 或者 @ExcelProperty( name = ) 来方便读取的时候定位数据
- 调用 EasyExcel.read().sheet().doread() 方法来实现数据的读取
reference: