roger.wang 发表于 2014-5-16 11:37:00

如何设置分组合计行

问题描述:如何实现指定列中相同值行分为一组。
问题解答:可以使用GroupDataModel等相关属性设置分组。
关键代码:?

      ///<summary>
      ///添加分组脚,并且设置合计
      ///</summary>
private void CreateGroupFooter()
      {
            // 添加默认分组列
            SheetView sheet = fpSpread1.ActiveSheet;
            sheet.AllowGroup = true;
            GroupDataModel gdm = newGroupDataModel(sheet.Models.Data);
            sheet.Models.Data = gdm;
            //SortInfo 构造函数 SortInfo(0, true) 中第一个参数为用于分组的列索引。
            SortInfo[] siList = newSortInfo[] { newSortInfo(0, true) };
            gdm.Group(siList, null);

            //设置默认分组
            DefaultGroupFooter dgf = fpSpread1.Sheets.DefaultGroupFooter;
            ISheetDataModel dataModel = dgf.DataModel;

            FarPoint.Win.Spread.CellType.TextCellType a = newTextCellType();
            this.fpSpread1_Sheet1.Columns.Get(0).CellType = a;
            //设置分组脚中公式
            (dataModel asIAggregationSupport).SetCellAggregationType(0, 3, AggregationType.Sum);
            (dataModel asIAggregationSupport).SetCellAggregationFormat(0, 3, "数量合计:{0}");

            this.fpSpread1.ActiveSheet.GroupFooterVisible = true;

            //获取列宽
            this.fpSpread1.ActiveSheet.Columns.Width = this.fpSpread1.ActiveSheet.Columns.GetPreferredWidth();
      }


效果截图:


示例下载:点击下载

yanzhenbin 发表于 2015-3-13 15:17:00

请问,如何实现,对于已合并的单元格数字,合计时只合计一次?,请问如何做合计呢?

yanzhenbin 发表于 2015-3-13 15:19:00

补充代码如下,例如合计第5列的数量如下代码,但是合并单元格的被重复统计了:
wSpdAll_Sheet1.ColumnFooter.SetAggregationFormat(0, 5, &quot;{0}&quot;);
                wSpdAll_Sheet1.ColumnFooter.SetAggregationType(0, 5, FarPoint.Win.Spread.Model.AggregationType.Sum);
                wSpdAll_Sheet1.Models.ColumnFooterRowAxis.SetResizable(5, true);
怎样写代码可以不重复统计已合并的单元格?

Alice 发表于 2015-3-13 17:05:00

回复 3楼yanzhenbin的帖子

目前spread设计会统计已合并的单元格。
只能自己写算法去排除这些单元格。
页: [1]
查看完整版本: 如何设置分组合计行