使用EasyExcel和axios下载Excel文件

在前端开发中,有时候我们需要将后端返回的数据以Excel文件的形式进行下载。为了实现这一功能,我们可以结合使用EasyExcel和axios来实现。EasyExcel是一个基于Java的Excel操作工具,而axios是一个强大的HTTP客户端,可以方便地发送请求和接收响应。通过这两者的结合,我们可以很方便地实现Excel文件的下载功能。

步骤

1. 后端实现

首先,我们需要后端实现一个接口来生成Excel文件并返回给前端。这里以Spring Boot为例来实现这个接口。假设我们有一个名为ExcelService的服务类,其中有一个方法generateExcel()用来生成Excel文件。

@RestController
public class ExcelController {

    @Autowired
    private ExcelService excelService;

    @GetMapping("/downloadExcel")
    public ResponseEntity<byte[]> downloadExcel() {
        byte[] excelBytes = excelService.generateExcel();
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel"));
        headers.setContentDispositionFormData("attachment", "data.xlsx");
        headers.setContentLength(excelBytes.length);
        return new ResponseEntity<>(excelBytes, headers, HttpStatus.OK);
    }
}

2. 前端实现

接下来,在前端我们可以使用axios来发送请求并下载Excel文件。首先,我们需要安装axios:

npm install axios

然后,在需要下载Excel的地方,我们可以使用如下代码:

import axios from 'axios';

const downloadExcel = () => {
  axios({
    url: 'http://localhost:8080/downloadExcel',
    method: 'GET',
    responseType: 'blob',
  }).then((response) => {
    const url = window.URL.createObjectURL(new Blob([response.data]));
    const link = document.createElement('a');
    link.href = url;
    link.setAttribute('download', 'data.xlsx');
    document.body.appendChild(link);
    link.click();
  });
};

downloadExcel();

流程图

flowchart TD
    A[发送GET请求下载Excel文件] --> B[后端接收请求并生成Excel文件]
    B --> C[后端返回生成的Excel文件]
    C --> D[前端接收到Excel文件并下载]

旅程图

journey
    title 下载Excel文件的旅程
    section 发送请求
        A(发送GET请求下载Excel文件) --> B{后端是否接收到请求}
        B -->|是| C(后端生成Excel文件)
        B -->|否| D(请求失败)
    section 下载Excel
        C --> E{前端是否接收到Excel文件}
        E -->|是| F(前端下载Excel文件)
        E -->|否| G(下载失败)

通过上面的步骤,我们可以很方便地使用EasyExcel和axios来实现Excel文件的下载功能。这样,我们就可以在前端点击按钮就可以下载Excel文件了,非常方便和实用。如果您有类似的需求,不妨尝试一下这种方法吧!