ajax 接收excel,Ajax配合后端实现Excel的导出

一、需求

在我们的日常开发中,可能经常需要遇到excel的导出,以往excel的导出服务器端都是使用的 GET 方法,但是某些情况下,服务器端只能使用 POST 方法,那么我们有没有好的方法实现excel的导出呢,并且页面最好不要刷新。

二、实现思路

1、方案一:我们可以使用ajax拿到服务器端返回的 数据下载流,然后借助 Blob 对象,在动态的创建一个 a 链接,那么也可以实现。

2、方案二:动态创建一个 iframe 标签下载,这种方案可以POST请求可能就无法下载了。

3、方案三:页面上动态的创建一个form然后提交这个form。

此处我们使用 方案一 即使用 ajax 来实现。

三、实现步骤

1、ajax请求的发送我们使用axios库来完成,axios的responseType需要设置成Blob,默认是json。

2、创建 Blob对象

3、创建a标签

4、触发下载动作

四、前端代码

ajax 文件导出

导出

function exportExcel() {

axios({

method: 'POST',

url: "http://localhost:8080/export",

timeout: 5000,

responseType: 'blob'

}).then(function (res) {

var data = res.data;

var blob = new Blob([data], {type: 'application/octet-stream'});

var url = URL.createObjectURL(blob);

var exportLink = document.createElement('a');

exportLink.setAttribute("download","ajax文件下载.xlsx");

exportLink.href = url;

document.body.appendChild(exportLink);

exportLink.click();

})

}

实现效果

64c36083d5fdcc022fdbd9455cb1292c.gif

完整代码如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值