vue + element-UI + export2excel 導出複雜table表格

vue + element-UI + export2excel 導出複雜table表格

multiHeader // 前两行的表头数据,二维数组,不够的用空白补全
merges //用於合併表格 如第一行的單位占excel表中 A1~B1 ,
multiHeader 與 header 應該可以合併,但本人沒有試過

 handleExport() {
      this.excelTable = this.list
      if (!this.excelTable.length) {
        this.$message.warning('暫無數據導出');
        return false;
      }
      import('@/vendor/Export2Excel').then((excel) => {
          const multiHeader =
                            [
                              ['單位','', '廠區', '現有人數','', '', '', '','調班人數', '應到人數', '實到人數', '出勤比率', '缺勤人數','', '', '', '', '缺勤比率', '異動人數','', '', '','出差人數'], //第一行
                              ['事業群', '單位','', '小計', '級','', '級','','', '', '', '','請假', '','曠工', '','小計','','新進', '調入', '調出', '離職',''] //第二行
                            ] // 前两行的表头数据,二维数组,不够的用空白补全
          const header = ['', '', '', '','直接人力', '間接人力', '非作業員', '作業員','', '', '', '','級', '級', '級', '級','', '', '', '','', '', ''] // 最后一行的表头数据
          const filterVal = [ 'BEGP','Unit','FactoryArea','Subtotal','DManpower','JManpower',
                              'NonOpertor',
                              'Opertor',
                              'ShiftPerson',
                              'Response',
                              'RealTo',
                              'AttendanceRatio',
                              'AbsentDivision',
                              'AbsentLevel',
                              'abstainedDivision',
                              'abstainedLevel',
                              'SubtotalAbsence',
                              'AbsenceRate',
                              'newAdd',
                              'TransferIn',
                              'TransferOut',
                              'Resignation',
                              'NOBT']
          const tableJsonList = this.excelTable
          console.log(multiHeader)
          const data = this.formatJson(filterVal, tableJsonList)
          const merges = ['A1:B1', 'C1:C3', 'D1:H1', 'I1:I3', 'J1:J3', 'K1:K3', 'L1:L3', 'M1:Q1', 'R1:R3', 'S1:V1', 'W1:W3',
                          'A2:A3', 'B2:B3','D2:D3', 'E2:F2', 'G2:H2', 'M2:N2', 'O2:P2', 'Q2:Q3', 'S2:S3', 'T2:T3', 'U2:U3', 'V2:V3',
                          ] // 合并单元格的数据,可根據在excel表格中占格數,A1:B1占橫兩格,D2:D3占豎兩格
          excel.export_json_to_excel({
            multiHeader,
            header,
            merges,
            data,
            filename: 'xxx表',
            autoWidth: true,
            bookType: 'xlsx'
          })
        })
    },
    formatJson(filterVal, tableJsonList) {
      return tableJsonList.map((v) =>
        filterVal.map((j) => {
          return v[j];
        })
      );
    },

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值