Spread for .NET
grouping과 footer 예제
하_늘_바_람
2022. 5. 12. 10:34
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}");
}
결과 화면