vue中使用axios下载java后台返回文件流导出excel文档
程序员文章站
2024-03-20 15:29:40
...
vue中使用axios下载java后台返回文件流导出excel文档
//1.配置请求
epCaseDataList(para,url) {
return axios({
url,
method: 'post',
data: para,
responseType: 'blob',
ContentType: 'application/json'
})
}
//2.配置方法
function exportBillingExcel (data, res) {
if (!data) {//如果没有data数据就不进行操作
return
}
// 获取headers中的filename文件名
let tempName = res.headers['content-disposition'].split(';')[1].split('filename=')[1]
// iconv-lite解决中文乱码
let iconv = require('iconv-lite')
iconv.skipDecodeWarning = true// 忽略警告
let fileName = iconv.decode(tempName, 'gbk')
let blob = new Blob([data], { type: 'application/vnd.ms-excel' })//转换成二进制对象
if ('download' in document.createElement('a')) { // 不是IE浏览器
let url = window.URL.createObjectURL(blob)//二进制对象转换成url地址
let link = document.createElement('a')
link.style.display = 'none'
link.href = url
link.setAttribute('download', fileName)
document.body.appendChild(link)
link.click()
document.body.removeChild(link) // 下载完成移除元素
window.URL.revokeObjectURL(url) // 释放掉blob对象
} else {
window.navigator.msSaveBlob(blob, fileName)
}
}
//3.在vue中使用
exportExcel () {
let start = this.startDate//请求参数
epCaseDataList({ start })//axios请求
.then(res => {
exportBillingExcel(res.data, res)//使用配置的方法进行处理即可
})
}
上一篇: springboot+maven 集成lombok简化代码
下一篇: js导出html到word