vue2+element使用插件导出全部表格数据

1、下载这俩个插件xlsx 和file-saver

npm i xlsx file-saver -S

2、在需要导出表格数据的页面导入


import FileSaver from 'file-saver'
import * as XLSX from 'xlsx'

3、我在这写了个导出按钮

       <el-button
          type="success"
          size="mini"
          @click="exportClick()"
          >导出表格</el-button>

4、写入导出提示,代码如下

 exportClick() {

  this.$confirm(
        "此操作将该项目下所有点集导出excel文件,是否继续?",
        "提示",
        {
          confirmButtonText: "确定",
          cancelButtonText: "取消",
          type: "warning"
        }
      ).then(() => {
            console.log('导出excel')
//如果不想影响表格的显示,可以重新调一次表格的接口
//这里是全部导出数据赋值
          this.form.pagesize = this.total
//重新调用表格数据,也就是重新调用了页面加载表格显示数据
          this.getPigList()
//调用成功后延迟加载导出
          setTimeout(() => {
            this.exportBtn()
          }, 1000)
      });
    }

5、导出数据

exportBtn() {
//表格使用的是el-table显示,这个获取的就是el-table自带的class,不是自己写的
      var fix = document.querySelector('.el-table__fixed-right')
      var wb
      var xlsxParam = { raw: true }
      if (fix) {
        wb = XLSX.utils.table_to_book(
    //这里获取的是el-table标签的id(自己写上去的id值)<el-table id="out-table">
          document.querySelector('#out-table').removeChild(fix),
          xlsxParam
        )
        document.querySelector('#out-table').appendChild(fix)
      } else {
        wb = XLSX.utils.table_to_book(
          document.querySelector('#out-table'),
          xlsxParam
        )
      }
      /* 获取二进制字符串作为输出 */
      var wbout = XLSX.write(wb, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array'
      })
      try {
        FileSaver.saveAs(
          //Blob 对象表示一个不可变、原始数据的类文件对象。
          //Blob 表示的不一定是JavaScript原生格式的数据。
          //File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。
          //返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
          new Blob([wbout], { type: 'application/octet-stream' }), //设置导出文件名称
          '某某某工作量.xlsx'
        )
      } catch (e) {
        if (typeof console !== 'undefined');
      }
//导出完成后记得把页面pagesize设置成初始页面显示数据,再重新调用下表格显示函数
      this.form.pagesize = 20
      this.getPigList()
      return wbout
    },

6、最后导出结果如下,导出结果是表格的所有数据,不是当前页面数据

另:这种是一次性导出全部表格数据,如果是有条件的导出(只要几条的),可以看看我的另一篇博客

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值