零基础也能轻松实现vue表格数据导出,大幅提升工作效率

前言

当我们在进行数据分析或数据可视化时,经常需要将表格数据导出为 excel 格式。在 web 应用中,vue 是一种广泛使用的前端框架,因此使用 vue 实现导出表格数据是一个非常常见的需求。本文将介绍如何使用 vue 实现导出表格数据的功能,以便于大家在开发过程中更加便捷地处理表格数据。


先看实现效果

在这里插入图片描述


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>
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水星记_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值