前端表格导出 excel 之 vue+elementUI 篇

2019-12-04  本文已影响0人  一名有马甲线的程序媛

法一:导出一个excel表

实现过程
  1. 先安装依赖
npm install --save xlsx file-saver
  1. 在需要的组件内引入
import FileSaver from "file-saver";
import XLSX from "xlsx";

vue:

<template>
    <div>
        <!-- 导出按钮 -->
        <div class="toexcel">
            <el-button  @click="exportExcel" type="primary">导出</el-button>
        </div>
        <el-table
            class="table"
            id="table"
            :data="tableData"
            border
            style="width: 100%">
            <el-table-column
            prop="date"
            label="日期"
            width="180">
            </el-table-column>
            <el-table-column
            prop="name"
            label="姓名"
            width="180">
            </el-table-column>
            <el-table-column
            prop="address"
            label="地址">
            </el-table-column>
        </el-table>
    </div>
</template>

js:

<script>
import FileSaver from "file-saver";
import XLSX from "xlsx";
export default {
  data() {
    return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
    };
  },
  methods: {
    // 导出表格所用
    exportExcel() {
      //  .table要导出的是哪一个表格
      var wb = XLSX.utils.table_to_book(document.querySelector(".table"));
      var wbout = XLSX.write(wb, {
        bookType: "xlsx",
        bookSST: true,
        type: "array"
      });
      try {
        FileSaver.saveAs(
          new Blob([wbout], { type: "application/octet-stream" }),
          "报表名称"+ ".xlsx"
        );
      } catch (e) {
        if (typeof console !== "undefined") console.log(e, wbout);
      }
      return wbout;
    }
  }
};
</script>

法一参考原文

法二:导出多级标题多sheet页excel

实现过程

js:

      // 创建工作蒲
      let workbook = XLSX.utils.book_new();
      for (let i = 0; i < 3; i++) {
        // 根据table的id创建sheet页,并将sheet添加到工作蒲中
        let tableSheet = XLSX.utils.table_to_sheet(document.querySelector('#table'));
        // 生成sheet页的名称
        XLSX.utils.book_append_sheet(workbook, tableSheet, 'sheet名' + i);
      }
      // 创建输出对象,excel后缀为xlsx
      let wbOut = XLSX.write(wordbook, {
        bookType: 'xlsx',
        bookSST: true,
        type: 'array'
      });
      try {
        // 通过window以流的方式导出工作蒲输出对象
        window.saveAs(
          new Blob([wbOut], { type: 'application/octet-stream' }), 'excel名.xlsx'
        );
      } catch (e) {
        if (typeof console !== 'undefined') console.log(e, wbOut);
      }
    },

法二参考原文

两种方法都亲测好用~ 需要的就直接拿去吧~ ☺

上一篇下一篇

猜你喜欢

热点阅读