背景: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[i];
- /* 如果这条item不是末级行,给当前行某个单元格设置公式,是末级行,去除公式 */
- if( data.someKey) {
- activeSheet.getRange(i, 1, 1, 1).formula('=SUBTOTAL(9,Axx,AXX)');
- } else {
- activeSheet.getRange(i, 1, 1, 1).formula(null);
- }
- }
复制代码
|