• vue 导出eltable内容


    如果el-table表格有跨行或跨列的,同样也支持
    1.安装依赖:npm install --save xlsx file-saver
    2.在放置需要导出功能的组件中引入
    import FileSaver from 'file-saver'
    import * as XLSX from 'xlsx'
    
    3.封装一个简单的导出组件
    在src下components中创建ExportExcel.vue
    将下面代码复制粘贴
    <template>
        <el-button type="primary"  :loading="downloadLoading" icon="el-icon-top-right" size="small" @click="exportExcel">导出</el-button>
    </template>
    
    <script>
    import FileSaver from 'file-saver'
    import XLSX from 'xlsx'
    export default {
      props: {
        id: {
          type: String,  //table ID名称
          default: 'table'
        },
        name: {
          type: String, //导出需要的名字
          default: 'Table'
        }
    
      },
      data () {
        return {
          downloadLoading:false
        }
      },
      components: {},
      methods: {
        // 导出Excel表格
        exportExcel () {
          this.downloadLoading = true
          var xlsxParam = { raw: true } //转换成excel时,使用原始的格式
          /* 从表生成工作簿对象 */
          var wb = XLSX.utils.table_to_book(
            document.querySelector('#' + this.id),
            xlsxParam
          )
          /* 获取二进制字符串作为输出 */
          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'
              }),
              //设置导出文件名称
              this.name + '.xlsx'
            )
          } catch (e) {
            if (typeof console !== 'undefined') console.log(e, wbout)
          }
          this.downloadLoading = false
          return wbout
        }
      }
    }
    </script>
    <template>
      <div>
        <!-- id绑定的是el-table的id名称 -->
        <!-- name是导出excel的表格名称 -->
        <exportExcel :id="'exportTab'" :name="'导出Table'"></exportExcel>
        <el-table :data="orderData" id="exportTab" :span-method="spanMethod" border>
          <el-table-column prop="id" label="ID" width="180"></el-table-column>
          <el-table-column prop="name" label="姓名" width="100"></el-table-column>
          <el-table-column prop="amount1" label="数值 1 (元)"></el-table-column>
          <el-table-column prop="amount2" label="数值 2 (元)"></el-table-column>
        </el-table>
      </div>
    </template>
    
    <script>
    import { getSpanMethod } from "@/utils/el-table-span-method";
    import ExportExcel from "@/components/ExportExcel.vue";
    
    export default {
      components: {
        ExportExcel,
      },
      data() {
        return {
          orderData: [
            {
              id: "1",
              name: "王小虎",
              amount1: "234",
              amount2: "165",
            },
            {
              id: "1",
              name: "王小虎",
              amount1: "165",
              amount2: "165",
            },
            {
              id: "2",
              name: "王小虎",
              amount1: "324",
              amount2: "165",
            },
            {
              id: "2",
              name: "王小虎",
              amount1: "621",
              amount2: "165",
            },
            {
              id: "2",
              name: "王小虎",
              amount1: "539",
              amount2: "165",
            },
            {
              id: "3",
              name: "王小虎",
              amount1: "621",
              amount2: "165",
            },
            {
              id: "3",
              name: "王小虎",
              amount1: "539",
              amount2: "165",
            },
          ],
        };
      },
      computed: {
        spanMethod: {
          get() {
            return (this.spanMethod = getSpanMethod(
              this.orderData,
              ["id"],
              ["name", "amount2"]
            ));
          },
          set(val) {
            return val;
          },
        },
      },
    };
    </script>

     

  • 相关阅读:
    你不知道的JavaScript(上)this和对象原型(二)
    hihocoder 1566 皇室成员的名字
    csu 1756: Prime
    csu 1770: 按钮控制彩灯实验
    csu 1898: 复盘拉火车
    csu 1901: 赏赐 OR 灾难
    csu 1909: Perfect Chocolate
    csu 1958: 数字游戏
    symfony2 环境搭建笔记
    php preg_match($p, $str, $match)方法简介
  • 原文地址:https://www.cnblogs.com/tszr/p/16329327.html
Copyright © 2020-2023  润新知