导入依赖
说明: Excel的解析与处理
Excel下载导入模板
Controller层接收前端请求
创建Excel工具类
说明:
我们进入resetResponse查看:
说明: 关于FileUtils继承自hutool的FileUtil,以及IdUtils来自hutools
详细文档请移步hutool入门和安装
关于Excel导出的实体类
说明: converter= ExcelLongConvert.class
是转换器,由于Excel表格支持的数据类型没有Long[]的类型,需要自己转换为数组类型
Excel转换器
说明: 附加:EasyExcel---转换器、数据处理器
导入和导出
说明:
拷贝代码(看看就好):
很多都是基于hutool里的工具类实现的。。。可以自己上网找找
Bean的拷贝之BeanUtils_wh柒八九的博客-CSDN博客_bean拷贝
在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进行属性复制到DTO,但是对象格式又不一样,所以我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型。
这种转换最原始的方式就是手动编写大量的 get/set代码,当然这是我们开发过程不愿意去做的,因为它确实显得很繁琐。为了解决这一痛点,就诞生了一些方便的类库,常用的有 apache的 BeanUtils,spring的 BeanUtils, Dozer,Orika等拷贝工具。
在这个项目中,从数据库中查询出来的信息(DO)要传输到EXCEL中,Excel需要的信息不全是用户表中的,还有其它表中的信息,于是我们从很多表中抽出我们需要的字段组成DTO,新的实体类,比如UserExcelVO,所以我们需要将从数据库查询出的User里的信息拷贝到UserExcelVo里,进行导出
这里为啥不用新建个实体类进行抽象出来呢? 因为本人数据库设计问题,并没有将这些字段加到用户表中,但是前端经常用到这些字段信息,相当于没有这几个字段的User表就没用了,所以索性不如直接添加进去进行使用,防止数据冗余
Spring—有参构造与无参构造
简述:
1.一般一个类他会自带一个默认的无参构造方法,如果你在其中写入了有参构造,在没有重新写入无参构造的情况下,该午餐构造方法就不存在了
2.在使用spring框架时,在使用一个类的时候,spring容器会自动对该类进行实例化,但是该类必须时无参构造的,相当于spring的默认设置
3.如果在使用spring框架时,实体类的初始化方法是有参构造,那么需要在配置文件中进行配置(即.xml文件)之后spring容器才能对该类进行实例化
重点是SpringBoot的底层是否Spring实现的,其类的注入需要无参构造,当类里存在有参构造时,无参构造就失效了,要么自己添加个无参构造,要们自己加个注解@NoArgConstructor
监听器与结果封装
继承easyExcel里的监听器:
结果封装:
监听器实现
说明: 这里涉及到无参构造,上面已经讲解导入和导出
主要是重写两个类:invoke与doAfterAllAnalysed: 其中invoke () 方法负责读取Excel中的数据,doAfterAllAnalysed () 方法是在读取完成之后执行的方法
结果测试