非工整交叉浮动表

2949
1

tangmq 数据达人Lv4

发表于2019-4-16 13:29

楼主
非工整的交叉浮动表
要了解非工整的交叉浮动标,就首先需要了解下表样工整的常规交叉浮动。
常规交叉浮动表,一个向右的浮动+一个向下浮动,指标在两个浮动表元的交叉区域,如下图:
常规交叉浮动,结果是m*n的完整的矩形结果,如下图:


非工整的交叉浮动表,如下图所示,每列数据出来的数据行数不同,每个数据行顺序也不同
这样结构的结果表如何设计,如下图所示就是该表的编辑表样,横向浮动需要包含纵向浮动


对于上述所生成的结果有两个不是很完美的地方:
1、  每组纵向都有合计行,由于数据行数不同,合计行所在的位置错落不一,如何让合计行都在最下面一行呢?
2、  浮动结果没有覆盖到的单元格,样式是空白的,如上数据行有背景颜色,但是空白单元格不带任何表元样式,如何让空白行表元样式与数据行保持一致?

Gogogo,牛掰的脚本分享给大家:

  1. def gridName = "GRID1"; // 表格代号

  2. rptNew = rpt.getGrid(gridName);

  3. rowCount = rptNew.getRowCount();

  4. colCount = rptNew.getColCount();

  5. for (c in 0..<colCount) {

  6.          for (r in 0..<rowCount - 1) {

  7.                    curCell = rptNew.getCell(r, c);

  8.                    nextCell = rptNew.getCell(r + 1, c);

  9.                    curCellDisplayValue = curCell.getDisplayValue();

  10.                    nextCellDisplayValue = nextCell.getDisplayValue();

  11.                    if (nextCellDisplayValue == null && curCellDisplayValue != null) { // 当前表元值不为空,下一行的表元值为空

  12.                             lastCell = rptNew.getCell(rowCount - 1, c);

  13.                             preCell = rptNew.getCell(r - 1, c);

  14.                             bkcolor = preCell.cbo().getBgColor();

  15.                             lastCell.copyAll(curCell);

  16.                             curCell.copyAll(nextCell);

  17.                             for (row in r..< rowCount - 1) {

  18.                                      tempCell = rptNew.getCell(row, c);

  19.                                      tempCell.copyStyle(preCell);

  20.                                      cellDrawBuilder = tempCell.cbo();

  21.                                      cellDrawBuilder.setBgColor(bkcolor);

  22.                                      // 修改后的样式必须应用到所属表元

  23.                                      cellDrawBuilder.apply();

  24.                             }

  25.                             break;

  26.                    }

  27.          }

  28. }
复制代码


效果图:

最近看过此主题的会员

esen_54Q7AO7N6W

xyr

esen_4YO0F42DH6

韩雯琪

1个回答

只看楼主

辰哥 管理员

发表于2019-12-5 15:16

只看该作者

取消 关注该作者的回复

沙发

很赞的分享,学习~

登录后可回答问题,请登录注册

快速回复 返回顶部 返回列表

小时

全天响应

分钟

快速处理问题

工程师强势助力

明星产品
解决方案
联系合作

400咨询:400-0011-866

技术支持QQ:400-0011-866(工作日9:00-18:00)

产品建议邮箱yixin@esensoft.com

关注我们

扫TA学习更多干货

一对一专家交流

版权所有© 2006-2024 北京亿信华辰软件有限责任公司 京ICP备07017321号 京公网安备11010802016281号