Grouped 이벤트에 아래의 코드를 작성
private void sprSpread_Grouped(object sender, EventArgs e) {
sprSpread.ActiveSheet.GroupInfos.Clear();
// 헤더, 풋터의 레이아웃을 디자인함.
// 첫번째 그룹
sprSpread.ActiveSheet.GroupInfos.Add(new GroupInfo() {
BackColor = Color.WhiteSmoke,
FooterHorizontalAlignment = CellHorizontalAlignment.Right,
FooterBackColor = Color.WhiteSmoke
});
// 두번째 그룹 이상을 설정함.
// GroupInfo를 하나더 추가하면 세번째 그룹에 적용됨.
sprSpread.ActiveSheet.GroupInfos.Add(new GroupInfo() {
BackColor = Color.Cyan,
FooterHorizontalAlignment = CellHorizontalAlignment.Right,
FooterBackColor = Color.Cyan
});
foreach (FarPoint.Win.Spread.Model.Group item in
(sprSpread.ActiveSheet.Models.Data as FarPoint.Win.Spread.Model.GroupDataModel)
.Groups) {
FooterSum(item);
}
}
위의 FooterSum(item)의 재귀함수를 만들어서 하위 그룹의 Footer에 합계값을 표시한다.
private void FooterSum(FarPoint.Win.Spread.Model.Group item) {
DefaultGroupFooter dgf = sprSpread.ActiveSheet.DefaultGroupFooter[item.Column];
ISheetDataModel dataModel = dgf.DataModel;
if (item.Rows.Count > 0) {
foreach (var row in item.Rows) {
if (row is FarPoint.Win.Spread.Model.Group) {
FooterSum(row as FarPoint.Win.Spread.Model.Group);
}
else {
break;
}
}
}
(dataModel as IAggregationSupport).SetCellAggregationType(0, 6, AggregationType.Sum);
(dataModel as IAggregationSupport).SetCellAggregationFormat(0, 6, "{0:#,0}");
(dataModel as IAggregationSupport).SetCellAggregationType(0, 7, AggregationType.Sum);
(dataModel as IAggregationSupport).SetCellAggregationFormat(0, 7, "{0:#,0}");
(dataModel as IAggregationSupport).SetCellAggregationType(0, 8, AggregationType.Sum);
(dataModel as IAggregationSupport).SetCellAggregationFormat(0, 8, "{0:#,0}");
(dataModel as IAggregationSupport).SetCellAggregationType(0, 9, AggregationType.Sum);
(dataModel as IAggregationSupport).SetCellAggregationFormat(0, 9, "{0:#,0}");
}
결과 화면
'Spread for .NET' 카테고리의 다른 글
spread for.NET grouping 확장/축소 (feat. coding) (0) | 2022.05.13 |
---|---|
RangeGroup 예제 (0) | 2022.05.13 |
Spread for .NET 그룹핑 초기화 (0) | 2022.05.10 |
필터된 값 초기화 (0) | 2022.04.25 |
Sort Indicator(정렬 표시자) 제거하기 (feat. Spread.Net) (0) | 2022.04.22 |