今天后端开发人员给了我一个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 

Logo

前往低代码交流专区

更多推荐