user99999 发表于 2024-11-27 15:29:02

Spread透视表中,如何实现subtotals行和列分别汇总

问:SpreadJs透视表中,有subtotalsPosition属性,目前已知属性值有top/bottom/none,如何实现基于行维度和列维度分别控制subtotals的展示


目前使用的插件版本如下:
"@grapecity/spread-sheets": "15.1.3",
"@grapecity/spread-sheets-pivot-addon": "15.1.3",
主要代码如下:

const initPivotTable = (spread) => {
    const sheet = spread.getSheet(0)
    sheet.name('PivotTable')
    const _option = {
      ...option,
      grandTotalPosition,
      subtotalsPosition: 0
    }

    const pivotTable = sheet.pivotTables.add(
      `pivotTable${Math.floor(Math.random() * 10)}`,
      pivotSales.body, // 直接使用数据源
      0,
      0,
      GC.Spread.Pivot.PivotTableLayoutType.tabular,
      GC.Spread.Pivot.PivotTableThemes.medium2,
      _option
    )

    pivotTable.suspendLayout()
    initTableColumn(pivotTable)
    setBodyFormatter(pivotTable)
    pivotTableChange(sheet)
    pivotTable.refresh()
    pivotTable.resumeLayout()
    pivotTable.autoFitColumn()
    return pivotTable
}


Wilson.Zhang 发表于 2024-11-27 17:33:58

您好!请教下您是否要求对某行或某列进行汇总?需要您详细介绍下您的需求场景。

user99999 发表于 2024-11-27 18:53:57

暂时不需要对某行或列进行汇总。

目前期望的效果是:针对现在设置subtotalsPosition同时展示行和列的场景,希望从行和列两个维度分别展示subtotals。

可以理解为:在现有设置subtotalsPosition展示的情况下,选中行时,只展示行维度的subtotals,隐藏现在的列维度subtotals;选择列时,只展示列维度的subtotals,期望实现效果对标wijmo

如果能实现,请提供具体demo及核心代码进行说明,包括主要思路等,感谢!

目前主要表格渲染主体如下:

Wilson.Zhang 发表于 2024-11-28 09:49:11

user99999 发表于 2024-11-27 18:53
暂时不需要对某行或列进行汇总。

目前期望的效果是:针对现在设置subtotalsPosition同时展示行和列的场 ...

从您提供的图片中了解到您的数据透视表中同时存在有行字段和列字段,在这种情况下,默认的汇总将分别对行字段和列字段两个方向进行汇总。如果您需要自行控制根据场景单独显示行字段汇总或列字段汇总,可以尝试通过“总计”中“仅对行启用”和“仅对列启用”分别仅显示行或列汇总,如下图所示:


这样的设置对整个透视表有效,比如“仅对列启用”的效果是只关注列字段,而不关注透视表中行字段形成的分组汇总。如下图所示,列汇总呈现了quantity列字段各属性值在所有salesperson、car情况下的汇总:


“仅对行启用”可以呈现行方向上的汇总,与不分开显示没有太大区别,只是没有行字段各属性值分组内的列汇总,如下图所示:


如果您希望对行字段每个分组都能体现行方向的汇总和列方向的汇总,可以在透视表中加上筛选字段。如下图所示,以salesperson为筛选字段,筛选后设置“仅对行启用,即可仅从行方向汇总,在少选字段选择”Alan“,即可看到Alan的行方向汇总结果:


同理,”仅对列启用“也可以得到Alan的列字段汇总结果,如下图所示:


切换筛选字段中的其他值可以查看其他salesperson的相关数据。将上述图片中的透视表文件提供给您亲测了解,您可以评估下。

user99999 发表于 2024-11-28 14:32:52

针对上述,更准确的描述我的需求背景为:
1. “列汇总”可以呈现列方向上的汇总,而不关注透视表中行字段形成的分组汇总
2. “行汇总”可以呈现行方向上的汇总,同时需要行字段每个分组都能体现行方向的汇总和列方向的汇总


我是第一次使用透视表,并且组内均没有很好的经验。针对上述提供的ssjson文件,不太清楚怎么用,请问能提供一些具体的透视表API或者DEMO吗


Wilson.Zhang 发表于 2024-11-28 14:48:10

本帖最后由 Wilson.Zhang 于 2024-11-28 16:55 编辑

user99999 发表于 2024-11-28 14:32
针对上述,更准确的描述我的需求背景为:
1. “列汇总”可以呈现列方向上的汇总,而不关注透视表中行字段 ...
我需要确认下是否正确理解到您的需求,以我在4楼提供给您的demo中的透视表为例,如下:

1. “列汇总”呈现列方向上的汇总,不关注透视表行字段形成的分组汇总,是否如下图所示:


2. “行汇总”呈现行方向上的汇总,同时显示行字段形成的个分组内的行汇总和列汇总,是否如下图所示:


user99999 发表于 2024-11-28 20:02:42

是的,为防止理解偏差,放上之前使用wijmo实现的图,现在使用Spread透视表,希望效果和之前保持一致,请为我提供demo和核心代码说明,万分感谢!

未设置行和列汇总前(初始化数据):


设置行汇总:


设置列汇总:


同时设置行和列汇总:


透视面板配置:

user99999 发表于 2024-11-28 20:05:50

还没完全了解透视表的功能和使用,如果描述有偏差,请参照上述截图中的内容实现,感谢

Wilson.Zhang 发表于 2024-11-29 11:01:37

根据您最新提供的图示说明,我还需要跟您确认一些理解,如下:

1. 在行汇总图示中,相较于无汇总,我看到的是行字段分组内部各列汇总和所有行字段各列的汇总。

2. 在列汇总图示中,相较于无汇总时多出了新列,我理解的列汇总是在每列的最底部或者最顶部计算该列所有数据的统计和。

3. 在同时行汇总和列汇总图示中,仍然是关于列汇总部分的疑问,请参见2。

另外,数据透视表目前支持设置汇总显示的位置,即subtotalPosition,不支持对单个字段设置汇总显示与否。目前还不确定您的需求是否对单个字段设置汇总显示与否,所以还需要跟您进一步确认下,也是为了更好地解决您的疑问。

关于数据透视表的功能和使用,您可以参考官网教程先做了解,也可以在论坛发帖,我们看到后会给您解答。
https://demo.grapecity.com.cn/spreadjs/SpreadJSTutorial/features/pivot-table/overview/purejs

user99999 发表于 2024-11-29 16:42:20

基于上述图片补充如下:
1. 在行汇总时,行字段分组内部各列汇总和所有行字段各列的汇总
2. 在列汇总时,多出了新列,并且值等于当前组的和。每一行的数据都会显示汇总,而不是只在当前组最顶部或最底部
eg:2023M11的列汇总为2023WK44B、2023WK46两列的汇总


3. 行和列同时汇总时:行为之前的行汇总,列汇总部分新增对应列汇总:


4. 无汇总时,默认展示如下:


目前没看到需要对某个字段单独设置汇总,使用的都是默认之前wijmo的功能,本次也一样
页: [1] 2
查看完整版本: Spread透视表中,如何实现subtotals行和列分别汇总