其他分享
首页 > 其他分享> > Vue 导出 excel

Vue 导出 excel

作者:互联网

Vue 导出 excel

// 导入插件

// 代码部分

<template>
  <div>
    <el-button @click="outExcel">导出excel表格文件</el-button>
    <el-table :data="comeData"
              id="userInfo">
      <el-table-column type="index"
                       label="#">
      </el-table-column>

      <el-table-column prop="name"
                       label="姓名">
      </el-table-column>

      <el-table-column prop="password"
                       label="密码">
      </el-table-column>
    </el-table>
  </div>
</template>

<script>

// 导入 导出功能
import FileSaver from 'file-saver'
import XLSX from 'xlsx'

export default {
  data () {
    return {
      comeData: []
    }
  },
  methods: {
    async getComeData () {
      const { data: res } = await this.$http.post('/user/selectAll')
      this.comeData = res
      console.log(res)
    },
    // 导出
    outExcel () {
      var wb = XLSX.utils.table_to_book(document.querySelector('#userInfo'))
      /* 获取二进制字符串作为输出 */
      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' }),
          // 设置导出文件名称
          'sheetjs.xlsx'
        )
      } catch (e) {
        if (typeof console !== 'undefined') console.log(e, wbout)
      }
      return wbout
    }
  },
  created () {
    this.getComeData()
  }

}
</script>

<style lang="less" scoped>
</style>

标签:wbout,xlsx,Vue,XLSX,excel,导出,Blob,res
来源: https://www.cnblogs.com/zxg-code/p/14113365.html