前端通过数据数组导表,element-ui

30 篇文章 0 订阅
9 篇文章 0 订阅

一、需要安装三个依赖:

         npm install -S file-saver xlsx

         npm install -D script-loader

二、项目中新建文件夹(文件名excel)
在这里插入图片描述
里面放置两个文件Blob.js和 Export2Excel.js。

下载链接:链接:链接: https://pan.baidu.com/s/1-tH2heqVGqmVKKc07GJhqQ
提取码: acr7
复制这段内容后打开百度网盘手机App,操作更方便哦
三、在vue的methods方法中:

页面添加导出按钮,加入方法
在这里插入图片描述
封装js文件
在这里插入图片描述
下面是封装源码

export default {
/**
     * @param {*} topmad 表头和展示数据 对象
     * @param [*] arrlist 表格数据,记得深克隆一次以防止对元数据改变
     * @param * name 表格名称
     * @param * successCall 回调方法可做防抖,以及其他事件处理
     */
  export2Excel(topmad, arrlist, name, successCall) {
    // console.log(Object.values(topmad))
    // console.log(Object.keys(topmad))
    require.ensure([], () => {
      const { export_json_to_excel } = require("../../excel/Export2Excel");
      const tHeader = Object.values(topmad);//表头
      // const tHeader = this.aksl;//表头
      const filterVal = Object.keys(topmad);//表格展示数据
      // const filterVal = [
      //     "useType",
      //     "operateUsername",
      //     "tradeAmount",
      // ];
      const list = arrlist;//表格数据
      console.log(list)
      const data = this.formatJson(filterVal, list);
      // console.log(data)
      export_json_to_excel(tHeader, data, name);
      successCall && successCall();
    });
  },
  formatJson(filterVal, jsonData) {
    // console.log(filterVal)
    // 时间撮在 createTime 对象里面
    jsonData.forEach(item => {
      if (item != '[object Object]') {

      } else {
        if (item.createTime) {
          item.createTime = item.createTime.time
        }
      }

    })

    // console.log(jsonData)
    return jsonData.map(v => filterVal.map(j => v[j]));
  },
}

下面是使用方法,表头是对象的value,对象里面的key是对应表格数据数组里面的字段,
数据格式是list:[{name:value}],

exportreport(){
this.success = false;
      let arrsss = {
        index : this.$t('nowan1.No1.sequence'),
        sellerName : this.$t('nowan1.No2.usebna'),
        country : this.$t('nowan1.No1.Merchants'),
        contracts : this.$t('nowan1.No2.seek'),
        contractNumber : this.$t('nowan1.No2.generated'),
        hebing : this.$t('nowan1.uit.wipagehwei'),
        usedLimit : this.$t('nowan1.uit.wipagehrei'),
        orderCount : this.$t('nowan1.No2.generated1'),
        orderPaidAmount : this.$t('nowan1.No2.pagename'),
        freeAm : this.$t('nowan1.uit.accountBalance'),
      }
      let name = this.$t('nowan1.No2.management');
      let list = JSON.parse(JSON.stringify(this.Settlemen));//这里是整个数据组,这里做深克隆原因是防止在封装的js文件里判断时间撮createTime 对象的时候对原数据组更改
      this.$utils.commonUtils.export2Excel(arrsss,list,name,()=>{setTimeout(()=>{this.success = true;},3000)});
}

觉得好用就给点个赞吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值