Fiooona 发表于 2020-7-27 10:39:21

如何在分组列中实现对某列数据进行分类汇总、向上汇总

背景:SpreadJS 中提供了分组列的功能,你可以使用分组列来展示有分层结构的数据,使数据呈现树形结构。
          在这种场景下,很多用户有对数据进行分类汇总,求和的需求,例如说一级节点对所有二级节点的某一列数据求和,二级节点对所有三级节点的某一列数据求和。
思路: 遍历每一行,可以获取当前行的所有子节点,然后设置公式,用subTotal公式来求和,公式中传入子节点区域。
subTotal公式详情:
https://demo.grapecity.com.cn/spreadjs/help/v12/content/webframe.html#SUBTOTAL.html
核心代码:

setDataSource(data);
// 遍历data
for (let i = 0; i < data.length; i++) {
const item = data;
/* 如果这条item不是末级行,给当前行某个单元格设置公式,是末级行,去除公式 */
if( data.someKey) {
    activeSheet.getRange(i, 1, 1, 1).formula('=SUBTOTAL(9,Axx,AXX)');
} else {
    activeSheet.getRange(i, 1, 1, 1).formula(null);
}
}




tianl 发表于 2021-5-6 09:25:51

该场景是否有GcExcel的示例?

Derrick.Jiao 发表于 2021-5-6 09:29:59

tianl 发表于 2021-5-6 09:25
该场景是否有GcExcel的示例?

您可以参考学习指南的分组列
https://demo.grapecity.com.cn/documents-api-excel-java/demos/outlinecolumn
页: [1]
查看完整版本: 如何在分组列中实现对某列数据进行分类汇总、向上汇总