vue 实现本地excel文件下载功能

本文介绍了一种在前端实现Excel文件下载的方法,并解决了下载文件默认名称不可更改的问题。通过创建a标签和使用Blob对象,可以自定义下载文件的名称。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天后端开发人员给了我一个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.youkuaiyun.com/zhengyun1568/article/details/103927480/   这篇博客哒~

注意2:我这里涉及到的是file对象转换为blob对象,也有其他类型的对象转换

url、base64、blob,三者之间的转化:https://mayouchen.blog.youkuaiyun.com/article/details/88087665?utm_medium=distribute.pc_relevant.none-task-blog-url

我是这样实现的:

取自:https://blog.youkuaiyun.com/qq_39024950/article/details/103204841 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值