前端调用后端接口下载excel文件的几种方式

今天有一个导出相应数据为excel表的需求。后端的接口返回一个数据流,一开始我用axios(ajax类库)调用接口,返回成功状态200,但是!但是浏览器没有自动下载excel表,当时觉得可能是ajax的安全性问题导致无法下载。下面列觉两种我测试成功的方式:

1.

1
window.location.href = '接口地址'

含义:当前页面打开URL页面.
和在浏览器输入接口地址一样,可以下载excel文件.但是缺点是无法执行POST请求

2.利用隐藏表单解决(我这里假设加入了JQuery库):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
	var exportData = [
    {'list1':'xiaodo1'},
    {'list2':'xiaodo2'}  
 ]  //模拟后台需要接收的参数
let form = $("<form>"); //创建form标签
 
form.attr("style","display:none");
from.attr("method","post");//设置请求方式
form.attr("action","接口地址"); //action属性设置请求路径
$("body").append(form); //页面添加form标签
 
let input1 = $("<input>"//创建input标签
input1.attr("type","hidden"//设置隐藏域
input1.attr("name","data"//设置发送后台数据的参数名
input1.attr("value",JSON.Stringify(exportData));
 
form.submit();//表单提交即可下载!

上面就是我测试成功的两种方法.后面我去百度了一下axios如何导出excel文件,发现也是可以的