需求描述
- 我对表格数据进行勾选,想要把勾选值导出成Excel文件
- 勾选后我将发送请求给后端,后端会返回一个二进制流的数据
- 我接收到返回值后,怎么把它下载成Excel文件呢?
一、请求接口处理
const params = this.handleReqParams()
const res = await this.$http.post('/api/xx/export_niubi.fes', params, {
responseType: 'arraybuffer'
})
const url = window.URL.createObjectURL(new Blob([res], { type: '.xlsx' }))
let a= document.createElement('a')
a.style.display = 'none'
a.href = url
a.setAttribute('download', `${this.objId}.xlsx`)
document.body.appendChild(a)
a.click()
window.URL.revokeObjectURL(url)
document.body.removeChild(a)
二、步骤图片说明
1.res返回数据
2.url地址
3.download属性
4.a标签
5.返回的原式数据,长这样
三、总结
- 到此为止,下载功能已经实现
- 你可以给 download 属性设置不同的值,来给文件取名,通常会加上一个时间函数
- 必须添加responseType: ‘arraybuffer’,不然报错(responseType也可以是blob,可自行尝试)
- new Blob([res], { type: ‘.xlsx’ }) 中的type可以改成其他格式,取决于你要导出的文件类型