前端下载Excel有两种方式:
方法一:
//js代码段
function isExport(){
console.log(url);
window.location = url+'/v2payment/download?year='+new Date().getFullYear();
}
方法二:
//js代码
function isExport(){
var subData ={};
subData.year =new Date().getFullYear();
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;//为请求添加Cookie
xhr.open('POST', url + '/v2payment/download', true); // 也可以使用POST方式,根据接口
xhr.setRequestHeader('content-type', 'application/json');
xhr.responseType = 'blob'; // 返回类型blob
// 定义请求完成的处理函数,请求前也可以增加加载框/禁用下载按钮逻辑
xhr.onreadystatechange = function (){
// 请求完成
if (xhr.readyState == 4 && this.status === 200) {
// 返回200
xhr.getAllResponseHeaders(); //返回全部头信息,string
// console.log(xhr.getAllResponseHeaders())
var filename = xhr.getResponseHeader('content-disposition');
filename = decodeURIComponent(filename.replace('attachment; filename=', ''));
// console.log(filename);
var blob;
blob = this.response;
if ('msSaveOrOpenBlob' in navigator) {
window.navigator.msSaveOrOpenBlob(blob, filename);
} else {
var reader = new FileReader();
reader.readAsArrayBuffer(blob); // 转换为base64,可以直接放入a标签
reader.onload = function (e) {
// 转换完成,创建一个a标签用于下载
var a = document.createElement('a');
a.download = filename;
a.href = URL.createObjectURL(new Blob([e.target.result]));
a.target = 'downloadframe';
$('body').append(a); // 修复firefox中无法触发click
a.click();
// $("#myModalDown").modal("hide");
$(a).remove();
};
}
}
}
var blob = new Blob([JSON.stringify(subData, null, 2)], {
type: 'application/json'
}); // 创建 blob 对象,同时指定类型
xhr.send(blob);
}