用的是阿里的com.alibaba.excel包,pom的依赖如下
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.6</version>
</dependency>
涉及到前后端跨域问题看
springboot解决跨域问题_a295277302的博客-CSDN博客_springboot解决跨域
前端的界面:
mapper
service层,直接return dao层的接口
业务逻辑层
因为原本的查询结果里,有LocalDateTime的时间类型,直接BeanCopy到为导出excel创建的bean会报错无法解析这个类型,于是做了转化为String的操作。这里的xxxReportBean是专门为了导出excel而创建的bean,里面的属性名跟类型与原查询条件的实体类属性名一致,只是时间类型的字段换成了String类型。ExcelUtils这个方法类下面会放图
ExcelUtils.createxxxxx....
这里可以看到会给httpServletResponse增加headers,可以在前端浏览器的控制台里的网络那里,response会有上面所指的'filename'这一值,用户自定义即可,可能还需要在处理跨域的工具配置类里加上
对应的为了导出excel的实体类Bean,加上@ExcelProperty,index从0开始,value是在excel表中显示的值
跨域headers:
如果不加的话可能前端到时拿不到headers,尽管在response那里能看见有filename,但是console.log是没有的...不给用
controller:
前端:
criteria是后端传过来的数据,具体是什么可以看文章开头PostMan的测试结果
exportExcel方法:
效果图:
想看headers有没有就在前端代码console.log一下就知道了
excel效果: