先看下效果
下面就是主要代码了
<a-button type="primary" @click="exportClick()">导出</a-button>
其中编码格式要一致,我这里是UTF-8,后端可能是GBK等其他格式。
exportClick() {
this.$axios
.get("", { //这里写上请求地址
params: {},
responseType: "blob"
})
.then(res => {
console.log(res);
const blob = new Blob([res], { type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8" });
const fileName = "专利统计" + new Date().getTime() + ".xls";
const elink = document.createElement("a"); // 创建a标签
elink.download = fileName; // 为a标签添加download属性 // a.download = fileName; //命名下载名称
elink.style.display = "none";
elink.href = URL.createObjectURL(blob);
document.body.appendChild(elink);
elink.click(); // 点击下载
console.log(elink.href);
URL.revokeObjectURL(elink.href); // 释放URL 对象
document.body.removeChild(elink); // 释放标签
});
},
如果是post请求,其余部分一样
this.$axios.post(
'', //你的地址
{
...this.params //你的参数
},
{
//定义类型
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
responseType: 'blob'
}
)