vue导出el-table中的所选项

问题描述:

最近在公司项目中需要使用导出el-table中所选中的项,之前没有接触过此方面的内容,所以感觉无从下手,搜索资料后发现了解决方案,现将解决方案记录下来,方便下次使用

实现效果

在这里插入图片描述
在这里插入图片描述

解决方案:

1.安装插件:

npm install file-saver --save
npm install xlsx --save
npm install script-loader -D

前两个插件详细地址:

https://github.com/SheetJS/sheetjs.
https://github.com/eligrey/FileSaver.js.

2.在src文件夹下新建excel文件夹,用于存放Blob.js 和 Export2Excel.js
在这里插入图片描述
3.导入FileSaver和XLSX,如果使用该功能的地方较多,可以在main.js中导入,否则可以在特定的组件中导入

import FileSaver from "file-saver";
import XLSX from "xlsx";

4.在项目中使用

<el-button @click="exportTable">导出</el-button>
exportTable() {
      this.$confirm("确定下载列表文件?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          this.excelData = this.multipleSelection; // 你要导出的数据list。
          this.export2Excel();
        })
        .catch(() => {});
    },
    export2Excel() {
      var that = this;
      require.ensure([], () => {
        const { export_json_to_excel } = require("../excel/Export2Excel.js"); // js文件的位置
        const tHeader = [
          "员工编号",
          "员工姓名",
          "性别",
          "民族",
          "身份证号",
          "党组织关系",
          "入司日期",
          "党员类型",
          "状态",
        ];
        const filterVal = [
          "id",
          "name",
          "male",
          "nation",
          "identityNumber",
          "dzzgxgszb",
          "rsDate",
          "memberType",
          "deleteFlag",
        ]; // 导出的表头字段名,需要导出表格字段名
        const list = that.filterTableDate(JSON.parse(JSON.stringify(that.multipleSelection)));
        const data = that.formatJson(filterVal, list);
        export_json_to_excel(tHeader, data, "党员信息表"); // 导出的表格名称,根据需要自己命名
      });
    },
    formatJson(filterVal, jsonData) {
      return jsonData.map((v) => filterVal.map((j) => v[j]));
    },
    //对后台返回数据数据进行格式化处理
    filterTableDate(data){
      data.forEach(item=>{
        if(item.gender===1){
          item.gender="男"
        }else if(item.gender===2){
          item.gender="女"
        }
        if(item.memberType===1){
          item.gender="中共党员"
        }else if(item.memberType===2){
          item.gender="中共预备党员"
        }
        if(item.deleteFlag===3){
          item.gender="在职"
        }else if(item.deleteFlag===0){
          item.gender="离职"
        }
        item.enterCompanyDate=this.formatTime(item.enterCompanyDate)
      });
      return data;
    },
    formatTime(date){
      if (date!==null) {
        let d=new Date(parseInt(date));
        return (
          [d.getFullYear(),d.getMonth()+1,d.getDate()]
          .map(d=>9?d:"0"+d)
          .splice(0,3)
          .join("-")
        )
      }else{
        return "--"
      }
    }

然后选择table表格中的某些项,点击导出按钮就可以导出了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值