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

  今天有一个导出相应数据为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

谢谢!

posted @ 2018-07-24 20:49  xiaobe  阅读(14023)  评论(0编辑  收藏  举报