帆软指定某个列连续相同的数值合并单元格

最近有个小需求,需要在帆软报表的某个数量列后方展示该列对应某个分组列的合计数,具体类似与这样:

将销售员 孙林 的各个类型产品的销量做汇总,合并单元格后居中展示。

在多个ai工具中搜索的解决方案都是在 单元格属性 模块的 其他模块中,把 连续相同值合并 和 扩展后合并 两个选项勾选中,本人当前的 finereport 设计器版本为 11.0.32,找了一圈确实没找到相关的选项,实在没辙,只好改用js判断来实现。具体如下:

1.通过sql实现数据的汇总,当前用了 sum()over实现

sql 复制代码
select *,
sum(销量)over(partition by 销售员) xl
from 销量

sql结果中,合计行为每行展示

2.把各个字段及表头展示梳理清楚

3.在上方 模板>模板web属性打开,根据实际需求,选择分页或者数据分析打开报表,选择 为该模板单独设置 ,然后在最下方的 事件设置 中选择 加载结束

根据实际情况,修改需要合并的列为哪个,我这里时 F 列,图片中都有标记,将代码直接复制进去就ok。

javascript 复制代码
// 示例:合并B列连续相同单元格
var cells = $("td[id^='F']"); // 选择F列所有单元格
var currentValue = "";
var startIndex = 0;

for (var i = 0; i < cells.length; i++) {
  var cell = $(cells[i]);
  var value = cell.text().trim();
  
  if (value !== currentValue) {
    if (i > startIndex) {
      // 合并从startIndex到i-1的单元格
      cells.eq(startIndex).attr("rowSpan", i - startIndex);
      for (var j = startIndex + 1; j < i; j++) {
        cells.eq(j).hide();
      }
    }
    currentValue = value;
    startIndex = i;
  }
}
// 合并最后一组
if (cells.length > startIndex) {
  cells.eq(startIndex).attr("rowSpan", cells.length - startIndex);
  for (var j = startIndex + 1; j < cells.length; j++) {
    cells.eq(j).hide();
  }
}

最后的结果

结果OK,下课。

相关推荐
复园电子1 小时前
企业级PDF批量盖章方案选型指南
数据库·pdf
AI-好学者8 小时前
阶段一-图数据库基础与PropertyGraph模型
数据库·rag·knowledge graph·graphrag
其实防守也摸鱼9 小时前
运维--学习阶段问题解答(1)(自测)
linux·运维·服务器·数据库·学习·自动化·命令模式
懒鸟一枚10 小时前
深入理解 Linux 内存、Swap 交换分区与分页机制的关系
java·linux·数据库
龙仔72510 小时前
SQL Server 创建只读账号完整操作(分两种场景:SSMS图形界面 + T-SQL脚本)
数据库·sql·oracle
霁月的小屋10 小时前
生产环境中的事务实践——银行系统上线记(四)
数据库
Database_Cool_10 小时前
AI 应用数据底座首选:阿里云 PolarDB 为大模型 RAG 提供一体化支撑
数据库·阿里云
玖玥拾11 小时前
C# 语言进阶(十五)C# 游戏服务端 MySQL 数据库
服务器·开发语言·网络·数据库·mysql·c#
IvorySQL12 小时前
PG 日报|社区讨论重构 pg_hba 配置文件格式
数据库·人工智能·postgresql·重构·ivorysql
逝水无殇12 小时前
C# 文件的输入与输出详解
开发语言·数据库·后端·c#