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

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

要在前端 Vue实现下载 Excel,你可以使用第三方库如 `xlsx` 或者 `file-saver`。其中,`xlsx` 库用于生成 Excel 文件,而 `file-saver` 库则用于将生成的文件保存到本地。 以下是一个简单的示例: 1. 首先,安装库: ```bash npm install xlsx file-saver --save ``` 2. 在 Vue 组件中导入库: ```javascript import XLSX from 'xlsx'; import FileSaver from 'file-saver'; ``` 3. 在组件中定义一个方法来生成并下载 Excel 文件: ```javascript methods: { downloadExcel() { //创建一个工作簿 const wb = XLSX.utils.book_new(); //创建一个工作表 const ws = XLSX.utils.json_to_sheet([{ name: 'John', age: 28 },{ name: 'Jane', age: 32 }]); //将工作表添加到工作簿中 XLSX.utils.book_append_sheet(wb, ws, 'Sheet1'); //将工作簿转换成二进制数据流 const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' }); //将二进制数据流转换成Blob对象 const blob = new Blob([s2ab(wbout)], { type: 'application/octet-stream' }); //使用file-saver库将文件保存到本地 FileSaver.saveAs(blob, 'example.xlsx'); } } ``` 4. 在模板中添加一个下载按钮,并绑定上述方法: ```html <template> <button @click="downloadExcel">下载Excel文件</button> </template> ``` 注意,上述代码中的 `s2ab` 是一个辅助函数,用于将字符串转换成二进制数组: ```javascript function s2ab(s) { const buf = new ArrayBuffer(s.length); const view = new Uint8Array(buf); for (let i = 0; i < s.length; i++) { view[i] = s.charCodeAt(i) & 0xFF; } return buf; } ``` 这样,当用户点击下载按钮时,就会生成并下载一个名为 `example.xlsx` 的 Excel 文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值