美文网首页
前端表格导出 excel 之 vue+elementUI 篇

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

作者: 一名有马甲线的程序媛 | 来源:发表于2019-12-04 09:49 被阅读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);
          }
        },
    

    法二参考原文

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

    相关文章

      网友评论

          本文标题:前端表格导出 excel 之 vue+elementUI 篇

          本文链接:https://www.haomeiwen.com/subject/vuekgctx.html