导出数据记录为excel:
问题:导出数据记录为excel。后端返回的是文件流,前端接受之后,点击导出可下载到本地为excel文件,可打开。
解决方案:
解决:1.前端在请求的时候,接受文件格式设置为:application/octet-stream 2.请求接口设置接受的数据格式为blob 3.在点击导出按钮的时候请求接口
方式一:
exportData() {
const that = this
this.$confirm({
title: '确定要导出数据吗?',
content: '此操作将导出所有的入库记录数据',
onOk() {
exportInStock({}).then((res) => {
// console.log(res)
let blob = new Blob([res], { type: 'application/vnd.ms-excel' }) // res就是接口返回的文件流了
let objectUrl = URL.createObjectURL(blob)
window.location.href = objectUrl
},
onCancel() {},
class: 'test',
})
},
方式二:在请求到数据之后,写法不同。
// let fileData = res
// const url = window.URL.createObjectURL(
// new Blob([fileData], {
// type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
// })
// )
// const link = document.createElement('a')
// link.href = url
// link.setAttribute('download', '文件') // 下载文件的名称及文件类型后缀
// document.body.appendChild(link)
// link.click()
// document.body.removeChild(link) // 下载完成移除元素
// window.URL.revokeObjectURL(url) // 释放掉blob对象
|