vue 实现本地excel文件下载功能
今天后端开发人员给了我一个excel文件,跟我说要实现excel下载功能,就是将给的excel文件下载下来。所以我还用之前用过的方法来实现,分为三步:1、首先将文件导入到系统中并引入,然后添加按钮事件2、完善按钮事件3、在build文件夹下的webpack.base.conf.js文件中,添加xlsx解析类型这样就实现了下载,不过这样下载的文件有一个问题,就是默认的名字下载.xlsx 但是这样有点
今天后端开发人员给了我一个excel文件,跟我说要实现excel下载功能,就是将给的excel文件下载下来。
所以我刚开始就直接还用之前用过的方法来实现,不过有一点小瑕疵,就是名字是默认的不能修改。先说下之前的方法分为三步:
1、首先将文件导入到系统中并引入,然后添加按钮事件
2、完善按钮事件
3、在build文件夹下的webpack.base.conf.js 文件中,添加xlsx解析类型
这样就实现了下载,不过这样下载的文件有一个问题,就是默认的名字 下载.xlsx 但是这样有点不大美观,所以想要改下名字
创建一个a标签用于下载,可以改变下载的文件名字。
代码如下:
downloadExcel() {
const bloc = dataURLtoBlob(this.fileurl)
const blob = new Blob([bloc], {
type: 'application/vnd.ms-excel'
})
const downLoadEle = document.createElement('a')
// 通过返回的二进制数据来创建一个对象URL.
const href = URL.createObjectURL(blob)
downLoadEle.href = href
// 信息表为自定义文件名
downLoadEle.download = '信息表'
document.body.appendChild(downLoadEle)
downLoadEle.click()
document.body.removeChild(downLoadEle)
// 当加载完成后释放对象URL.
window.URL.revokeObjectURL(href)
// window.open(fileurl, '_blank')
},
因为我这个是xlsx格式,所以先谢了将file对象先转换为了二进制的方法,并调用。
转换方法为:
function dataURLtoBlob(dataurl) {
const arr = dataurl.split(',')
const mime = arr[0].match(/:(.*?);/)[1]
const bstr = atob(arr[1])
let n = bstr.length
const u8arr = new Uint8Array(n)
while (n--) {
u8arr[n] = bstr.charCodeAt(n)
}
return new Blob([u8arr], {
type: mime
})
}
到此下载功能并修改名字功能就做完了
注意1:上述创建blob对象时,因为是表格类型,所以type是这样'application/vnd.ms-excel'写的,如果不是的话,
这个是取自 https://blog.csdn.net/zhengyun1568/article/details/103927480/ 这篇博客哒~
注意2:我这里涉及到的是file对象转换为blob对象,也有其他类型的对象转换
url、base64、blob,三者之间的转化:https://mayouchen.blog.csdn.net/article/details/88087665?utm_medium=distribute.pc_relevant.none-task-blog-url
我是这样实现的:
取自:https://blog.csdn.net/qq_39024950/article/details/103204841
更多推荐
所有评论(0)