vue导出动态的excel功能(vue中如何下载excel流文件及设置下载文件名)
类别:编程学习 浏览量:546
时间:2022-04-02 16:53:20 vue导出动态的excel功能
vue中如何下载excel流文件及设置下载文件名目录
- 概述
- 1、通过 url 下载
- 2、通过 a 标签 download 属性结合 blob 构造函数下载
- 3、通过 js-file-download 插件
导出excel需求,当点击下载模板或下载反馈结果,axios发起后端接口请求,返回的数据获取 response 时出现乱码,如图:
现总结如下几种处理方法。
1、通过 url 下载即后端提供文件的地址,直接使用浏览器去下载
通过window.location.href = 文件路径下载
window.location.href = `${location.origin}/operation/ruleImport/template`
通过 window.open(url, '_blank')
window.open(`${location.origin}/operation/ruleImport/template`)
这两种使用方法的不同:
- window.location:当前页跳转,也就是重新定位当前页;只能在网站中打开本网站的网页。
- window.open:在新窗口中打开链接;可以在网站上打开另外一个网站的地址。
a 标签的 download 属性是 HTML5 标准新增的,作用是触发浏览器的下载操作而不是导航到下载的 url,这个属性可以设置下载时使用新的文件名称。
前端创建超链接,接收后端的文件流:
axios.get(`/operation/ruleImport/template`, { responseType: "blob" //服务器响应的数据类型,可以是 'arraybuffer', 'blob', 'document', 'json', 'text', 'stream',默认是'json' }) .then(res => if(!res) return const blob = new Blob([res.data], { type: 'application/vnd.ms-excel' }) // 构造一个blob对象来处理数据,并设置文件类型 if (window.navigator.msSaveOrOpenBlob) { //兼容IE10 navigator.msSaveBlob(blob, this.filename) } else { const href = URL.createObjectURL(blob) //创建新的URL表示指定的blob对象 const a = document.createElement('a') //创建a标签 a.style.display = 'none' a.href = href // 指定下载链接 a.download = this.filename //指定下载文件名 a.click() //触发下载 URL.revokeObjectURL(a.href) //释放URL对象 } // 这里也可以不创建a链接,直接window.open(href)也能下载 }) .catch(err => { console.log(err) })
注:请求后台接口时要在请求头上加{responseType: 'blob'};download 设置文件名时,可以直接设置扩展名,如果没有设置浏览器将自动检测正确的文件扩展名并添加到文件。
3、通过 js-file-download 插件安装:
npm install js-file-download --S
使用
import fileDownload from 'js-file-download' axios.get(`/operation/ruleImport/template`, { responseType: 'blob' //返回的数据类型 }) .then(res => { fileDownload(res.data, this.fileName) })
以上就是vue中如何下载excel流文件及设置下载文件名的详细内容,更多关于vue中下载excel流文件及设置下载文件名的资料请关注开心学习网其它相关文章!
您可能感兴趣
- vue怎么编写规则(vue使用节流函数的踩坑实例指南)
- vue轮播图代码(vue实现无缝轮播效果跑马灯)
- vueelementui左侧菜单(Vue Element前端应用开发之动态菜单和路由的关联处理)
- vue官网编辑器主题(vue实现主题切换的多种思路分享)
- vue请求token无效(关于Vue 消除Token过期时刷新页面的重复提示问题)
- vue验证码怎么用(vue验证码组件使用方法详解)
- google 调试vue(Vue实现Google第三方登录的示例代码)
- vue如何加速(vue函数防抖与节流的正确使用方法)
- vue的修饰符都有哪些(详解Vue的sync修饰符)
- vuefor指令使用教程(Vue必学知识点之forEach的使用)
- vue中的指令及用法(详解Vue进阶构造属性)
- vue实现双向绑定原理(vue实现双向数据绑定)
- vue函数中的默认参数(Vue3中SetUp函数的参数props、context详解)
- vue element admin接口(Vue-Element-Admin集成自己的接口实现登录跳转)
- vue接收网络请求数据类型配置(vue中对接Graphql接口的实现示例)
- vue中如何判断请求状态码(关于VUE的编译作用域及slot作用域插槽问题)
- 解析葡萄牙6-1瑞士 进攻多点开花,贡萨洛-拉莫斯一战成名(解析葡萄牙6-1瑞士)
- 这支 奇兵队 腕大 有范儿还各怀绝技,毒贩杀人犯见了都要仓皇而逃(这支奇兵队腕大)
- 雄藩崛起 奇兵队与幕末长州藩军事改革(雄藩崛起奇兵队与幕末长州藩军事改革)
- 九月初,爱如蜜糖,甜到心扉,迷恋彼此,一日不见兮,思之若狂(九月初爱如蜜糖)
- ()
- 对你思念入骨的女人,跟你见面时会有这几种表现,藏都藏不住(对你思念入骨的女人)
热门推荐
- :link,:visited,:focus,:hover,:active的用法
- dockerpull镜像的过程(详解docker pull 下来的镜像都存到了哪里)
- mysql乐观锁与mvcc(MySQL中的乐观锁,悲观锁和MVCC全面解析)
- mysql对null值如何理解(MySQL为Null会导致5个问题个个致命)
- nginx配置访问接口(nginx网站服务如何配置防盗链推荐)
- web压力测试工具app(十款Web服务器性能压力测试工具)
- vue前台解析pdf文件流(Vue实现在线预览pdf文件功能利用pdf.js/iframe/embed)
- apache服务配置详解(apache配置开启网站服务步骤)
- mysql多行数据之和(详解MySQL的数据行和行溢出机制)
- js宏任务都有哪些(JavaScript 操作宏任务与微任务)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9