element-UI庫Table表格匯出Excel表格

大波蘿波發表於2020-02-19

Element元件庫中的el-table表格匯出需要的主要是兩個依賴:(xlsx 和 file-saver)

安裝:

npm install --save xlsx file-saver

兩個外掛的詳情地址:
https://github.com/SheetJS/js-xlsx
https://github.com/eligrey/FileSaver.js

程式碼:

<template>
    <div class="table">
        <!--給表格新增一個id,匯出檔案事件需要使用-->
        <el-table
        :data="tableData"
        border
        style="width: 100%"
        id="out-table"
        >
        <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>
        <!--給按鈕繫結事件-->
        <button @click="exportExcel">點選匯出</button>
    </div>
    </template>

    <script>
    // 引入匯出Excel表格依賴
    import FileSaver from "file-saver";
    import XLSX from "xlsx";

    export default {
    name: "javascriptthree",
    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 弄"
            }
        ]
        };
    },
    mounted() {},
    methods: {
        //定義匯出Excel表格事件
        exportExcel() {
        /* 從表生成工作簿物件 */
        var wb = XLSX.utils.table_to_book(document.querySelector("#out-table"));
        /* 獲取二進位制字串作為輸出 */
        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;
        }
    }
    };
    </script>

    <style scoped>
    .table {
    width: 100%;
    height: 300px;
    }
    </style>

相關文章