excel 文件的下载
- 前端
// 导出
const exportExcel = () => {
axios
.post(
'/comment/export',
{},
{
responseType: 'blob'
}
)
.then((res) => {
const stream = res.data // 后端用stream返回Excel文件
const blob = new Blob([stream])
// 前端获取业务码,成功执行正常业务
const downloadElement = document.createElement('a')
const href = window.URL.createObjectURL(blob) // 创建下载的链接
downloadElement.href = href
downloadElement.download = '测试下载.xlsx' // 下载后文件名
document.body.appendChild(downloadElement)
downloadElement.click() // 点击下载
document.body.removeChild(downloadElement) // 下载完成移除元素
window.URL.revokeObjectURL(href) // 释放掉blob对象
})
}
- 后端导出 excel
const xlsx = require('xlsx')
exportExcel: async (ctx) => {
const jsonData = [
{ username: 'jiang', age: 40 },
{ username: 'jancy', age: 30 },
{ username: 'test', age: 20 }
]
const ws = xlsx.utils.json_to_sheet(jsonData)
const wb = xlsx.utils.book_new() // 创建一个空的workbook
xlsx.utils.book_append_sheet(wb, ws, 'Sheet1')
xlsx.writeFileSync(wb, '导出测试.xlsx')
//类型
ctx.type = '.xlsx'
//请求返回,生成的xlsx文件
ctx.body = fs.readFileSync('导出测试.xlsx')
//请求返回后,删除生成的xlsx文件,不删除也行,下次请求回覆盖
fs.unlink('导出测试.xlsx', (err) => {
if (err) {
console.log(err)
throw err
}
})
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。