实现导出excel功能 需要 后端提供 url 地址 然后进行数据流的转换
exportExcel(url, params = {}, title) {
return new Promise((resolve, reject) => {
get(url, {
params,
responseType: 'blob',
headers: {
backdoor: 1,
},
}).then(
(res) => {
const blob = new Blob([res], {
type: 'application/vnd.ms-excel',
});
console.log(blob);
const fileName = `${title}.xls`;
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
// 释放内存
window.URL.revokeObjectURL(link.href);
}
resolve(res);
},
(err) => {
reject(err);
}
);
});
},
调用此方法即可
commonApi.exportExcel(`后端提供的url/export`, params(传参), '文件名');
还有 post 方法
// post请求下载
exportPostExcel(url, data = {}, title) {
return new Promise((resolve, reject) => {
post(url, {
data,
responseType: 'blob',
headers: {
backdoor: 1,
},
}).then(
(res) => {
const blob = new Blob([res], {
type: 'application/vnd.ms-excel',
});
console.log(blob);
const fileName = `${title}.xlsx`;
if (window.navigator.msSaveOrOpenBlob) {
navigator.msSaveBlob(blob, fileName);
} else {
var link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = fileName;
link.click();
// 释放内存
window.URL.revokeObjectURL(link.href);
}
resolve(res);
},
(err) => {
reject(err);
}
);
});
},
调用
commonApi.exportPostExcel(
`后端提供的url/export`,
params,
'文件名'
);