今天有一个导出相应数据为excel表的需求。后端的接口返回一个数据流,一开始我用axios(ajax类库)调用接口,返回成功状态200,但是!但是浏览器没有自动下载excel表,当时觉得可能是ajax的安全性问题导致无法下载。下面列觉两种我测试成功的方式:
1.window.location.href = '接口地址'
含义:当前页面打开URL页面.
和在浏览器输入接口地址一样,可以下载excel文件.但是缺点是无法执行POST请求
2.利用隐藏表单解决(我这里假设加入了JQuery库):
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文件,发现也是可以的.
axios导出excel文件可以参考这篇文章:https://blog.csdn.net/u013224660/article/details/79981350
谢谢!