vue实现导出表格数据

导读:本篇文章讲解 vue实现导出表格数据,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

先看实现效果

在这里插入图片描述

1.安装依赖

cnpm install -S file-saver xlsx
cnpm install -S script-loader

2.在公共组件中引入

import XLSX from "xlsx"
import FileSaver from 'file-saver'

3.使用

小案例

封装的公共组件

<template>
  <!-- // 导出按钮  -->
  <el-button type="success" icon="el-icon-upload" @click="exportEvent">导出</el-button>
</template>

<script>
// 引入导出插件
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
  data() {
    return {};
  },
  //需要的参数
  props: {
    id: {
      type: String,
      default: "Table",
    },
    name: {
      type: String,
      default: "Table",
    },
  },
  methods: {
    // 导出Excel表格事件
    exportEvent() {
      let gatherData = { raw: true };
      let grid = XLSX.utils.table_to_book(
        document.querySelector("#" + this.id),
        gatherData
      );
      let workbook = XLSX.write(grid, {
        bookType: "xlsx",
        bookSST: true,
        type: "array",
      });
      try {
        FileSaver.saveAs(
          new Blob([workbook], {
            type: "application/octet-stream",
          }),
          this.name + ".xlsx"
        );
      } catch (e) {
        if (typeof console !== "undefined") console.log(e, workbook);
      }
      return workbook;
    },
  },
};
</script>

使用的组件

<template>
  <div>
    <div>
      <derive :id="spreadsheet.id" :name="spreadsheet.name">导出</derive>
    </div>
    <div class="tableBox">
      <el-table :data="tableData" border :id="spreadsheet.id">
        <el-table-column align="center" prop="sqrq" label="申请日期"></el-table-column>
        <el-table-column align="center" prop="clpp" label="车辆品牌"></el-table-column>
        <el-table-column align="center" prop="clxh" label="车辆型号"></el-table-column>
        <el-table-column align="center" prop="vin" label="VIN码"></el-table-column>
        <el-table-column align="center" prop="scqy" label="生产企业"></el-table-column>
        <el-table-column align="center" prop="cllx" label="车辆类型"></el-table-column>
        <el-table-column align="center" prop="rlzl" label="燃油种类"></el-table-column>
        <el-table-column align="center" prop="obdlw" label="OBD联网"></el-table-column>
      </el-table>
    </div>
  </div>
</template>

<script>
import derive from "@/components/derive"; //引入公共组件
export default {
  data() {
    return {
      tableData: [], //要导出的表格数组
      spreadsheet: {
        id: "exportTable", //id
        name: "交易数据", //导出文件名
      },
    };
  },
  //注册组件
  components: {
    derive,
  },
};
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/79429.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!