问题描述:如何实现指定列中相同值行分为一组。
问题解答:可以使用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[0].DefaultGroupFooter[0];
- 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[3].Width = this.fpSpread1.ActiveSheet.Columns[3].GetPreferredWidth();
- }
复制代码
效果截图:
示例下载:点击下载 |