后端代码
添加依赖
首先安装依赖
| 12
 3
 4
 5
 6
 
 | <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>easyexcel</artifactId>
 <version>2.1.1</version>
 </dependency>
 
 | 
设置excel表头映射文件
然后添加一个VO类,声明excel中的表头字段
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | package com.szx.edu.entity.vo;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
 import lombok.Data;
 
 @Data
 @ExcelIgnoreUnannotated
 public class ExportEventVo {
 @ExcelProperty(value = "订单号")
 String orderid;
 
 @ExcelProperty(value = "客户名称")
 String userName;
 
 @ExcelProperty(value = "客户电话")
 String userPhone;
 }
 
 | 
添加 controller
编写 controller
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 
 | @GetMapping("excelTable")@ApiOperation("导出数据")
 public void exportTable(HttpServletResponse response) throws IOException {
 
 response.setContentType("application/vnd.ms-excel");
 
 response.setHeader("content-disposition","attachment;filename=eventlist.xlsx");
 
 ExcelWriterBuilder writeWork = EasyExcel.write(response.getOutputStream(), ExportEventVo.class);;
 
 ExcelWriterSheetBuilder sheet = writeWork.sheet();
 
 ArrayList<ExportEventVo> eventVos = new ArrayList<>();
 
 List<EventList> allEvent = eventListService.getAllEvent();
 
 for (EventList eventList : allEvent) {
 ExportEventVo vo = new ExportEventVo();
 
 vo.setOrderid(eventList.getOrderid());
 
 vo.setUserName(eventList.getUserName());
 
 vo.setUserPhone(eventList.getUserPhone());
 
 eventVos.add(vo);
 }
 
 
 sheet.doWrite(eventVos);
 }
 
 | 
前端代码
这个方法时get请求,浏览器直接请求这个地址就会自动触发下载,前端也可以通过流的方式接收接口返回,然后处理文件下载,方法如下
拦截器处理返回
首先在请求拦截器中添加如下判断

添加请求api
添加接口 api 请求
| 12
 3
 4
 5
 6
 7
 8
 
 | export function exportEventFun() {
 return request({
 method: 'get',
 url: `/edu/event-list/excelTable`,
 responseType: 'blob',
 })
 }
 
 | 
调用实现
点击按钮调用接口触发下载
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 
 | exportEvent()
 {
 exportEventFun().then((res) => {
 const objectUrl = URL.createObjectURL(
 new Blob([res.data], {
 type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
 })
 )
 const link = document.createElement('a')
 
 link.download = `案件列表` + '.xlsx'
 link.style.display = 'none'
 link.href = objectUrl
 link.click()
 document.body.appendChild(link)
 })
 }
 ,
 
 |