vue导出xlsx表格文件-简单粗暴
因为考虑到复用,所以简单封装了一下,需要的直接copy就行了
注意-后端返回的数据必须是execel的文件流!
1.创建exportExcel.js文件
2.创建函数名称以及返回值
export const exportExcel = (res) => { }
3.处理文件名称
let fileName if (res.headers) { //处理文件名 const contentDisposition = res.headers[content-disposition] if (contentDisposition) { fileName = window.decodeURI( res.headers[content-disposition].split(=)[1] ) } } else { Message({ message: 无文件名, type: error, }) }
接口的hearders需带有content-disposition字段,这个和后端对接好。
4.处理返回的文件流以及处理导出
//这个响应值对应自己的 if (res.data.data) { //处理文件流 let blob = new Blob([res.data.data], { type: application/vnd.ms-excel, }) let url = window.URL.createObjectURL(blob) const link = document.createElement(a) // 创建a标签 link.href = url link.download = fileName link.click() URL.revokeObjectURL(url) } else { Message({ message: 导出失败, type: error, }) }
5.在对应的页面导入文件以及调用
import { exportExcel } from @/plugin/exportExcel.js // 调文件导出方法 exportExcel(res)
这样就可以成功的导出文件啦!
下面贴一下完整的js代码
// 统一处理文件导出 export const exportExcel = (res) => { let fileName if (res.headers) { //处理文件名 const contentDisposition = res.headers[content-disposition] if (contentDisposition) { fileName = window.decodeURI( res.headers[content-disposition].split(=)[1] ) } } else { Message({ message: 无文件名, type: error, }) } if (res.data.data) { //处理文件流 let blob = new Blob([res.data.data], { type: application/vnd.ms-excel, }) let url = window.URL.createObjectURL(blob) const link = document.createElement(a) // 创建a标签 link.href = url link.download = fileName link.click() URL.revokeObjectURL(url) } else { Message({ message: 导出失败, type: error, }) } }
有疑问的私聊我即可