js-表格多级统计

js 表格-多级统计

1、主要采用递归方法进行遍历添加行,以下为核心方法

	/**
     * 合并表格相同列 tbId 表格id,row总行数,col合并列数
     */
    function countRowHandle (tbId,row,col) {
      if (row == 1) {
        return 1
      }else {
        // 合并
        for (var i = 0; i < col; i++) {
          if (tbId.rows[row].cells[0].innerHTML == tb.rows[row-1].cells[0].innerHTML) { // 判断第一列是否相等
            if (tbId.rows[row].cells[i].innerHTML == tb.rows[row-1].cells[i].innerHTML) {
              tbId.rows[row-1].cells[i].rowSpan = (tb.rows[row].cells[i].rowSpan | 0) + 1
              tbId.rows[row].cells[i].style.display = 'none';
            }
          }
        }

        // 新增行 总计
        if ((tb.rows[row].cells[0].rowSpan | 0) < 2) {
          var t = tb.insertRow(row+1);
          for (var i = 0; i < col_len; i++) {
            if (i == 0) {
              t.insertCell(i).innerHTML = '总计';
              tbId.rows[row+1].cells[i].colSpan = 3;
            }
            else {
              t.insertCell(i).innerHTML = '';
            }
          }
        }

        // 删除总计多余col
        if (tb.rows[row+1].cells[0].colSpan > 1) {
          tbId.rows[row+1].cells[1].style.display = 'none';
          tbId.rows[row+1].cells[2].style.display = 'none';
        }

        // 新增行 小计
        if ((tb.rows[row].cells[1].rowSpan | 0) < 2) {
          var t = tb.insertRow(row+1);
          for (var i = 0; i < col_len; i++) {
            if (i == 0) {
              t.insertCell(i).innerHTML = tb.rows[row].cells[i].innerHTML;
              tbId.rows[row+1].cells[i].style.display = 'none';
            }
            else if (i == 1) {
              t.insertCell(i).innerHTML = tb.rows[row].cells[i].innerHTML + '小计';
              tbId.rows[row+1].cells[i].colSpan = 2;
            
            }
            else {
              t.insertCell(i).innerHTML = '';
            }
          }
          tbId.rows[row-1].cells[0].rowSpan += 1
        }
        
        // 删除小计多余col
        if (tb.rows[row+1].cells[1].colSpan > 1) {
          tbId.rows[row+1].cells[2].style.display = 'none';
        }

        return countRowHandle(tbId,row -1,col)
      }
    }

2、调用方法:

 $(function () {
    var tb = document.getElementById('sub'); // 表格
    var row_len = $('table#sub>tbody>tr').length; // 总行数
    var col_len = $('table#sub>tbody>tr>td').length/row_len; //总列数

    countRowHandle (tb,row_len,2)
  })

3、效果图
页面效果图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xlsx-js-style是一个用于在前端开发中自定义Excel样式的库。它提供了多种功能,包括多级表头、合计行、单元格宽度设置、合并单元格和隐藏表头等。 要使用xlsx-js-style实现多级表头,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了FileSaver和XLSX这两个库。你可以使用npm命令进行安装: ```shell npm install -S file-saver xlsx ``` 2. 在你的前端项目中引入xlsx-js-style库: ```javascript import XLSX from 'xlsx'; import XLSXStyle from 'xlsx-style'; ``` 3. 创建一个包含多级表头的数据对象。你可以使用XLSX.utils.json_to_sheet方法将数据转换为Excel表格: ```javascript const data = [ { name: 'John', age: 25, city: 'New York' }, { name: 'Jane', age: 30, city: 'Los Angeles' }, { name: 'Bob', age: 35, city: 'Chicago' } ]; const worksheet = XLSX.utils.json_to_sheet(data); ``` 4. 使用XLSXStyle.utils.sheet_add_json方法将数据添加到工作表中: ```javascript XLSXStyle.utils.sheet_add_json(worksheet, data, { header: ['name', 'age', 'city'] }); ``` 5. 设置多级表头样式。你可以使用XLSXStyle.utils.sheet_set_range_style方法来设置表头样式: ```javascript const range = { s: { r: 0, c: 0 }, e: { r: 0, c: 2 } }; // 设置表头范围 const style = { font: { bold: true }, fill: { fgColor: { rgb: 'FFFF0000' } } }; // 设置表头样式 XLSXStyle.utils.sheet_set_range_style(worksheet, range, style); ``` 6. 保存Excel文件。你可以使用FileSaver库将工作表保存为Excel文件: ```javascript const workbook = XLSXStyle.utils.book_new(); XLSXStyle.utils.book_append_sheet(workbook, worksheet, 'Sheet1'); XLSXStyle.writeFile(workbook, 'output.xlsx'); ``` 通过以上步骤,你可以使用xlsx-js-style库在前端开发中实现多级表头的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值