GroupingSample.cs
class GroupingDef {
public int ColIdx { get; set; }
public int RowIdx { get; set; }
public int ColLen { get; set; }
public int RowLen { get; set; }
/// <summary>
/// 行のグループ化であるか
/// </summary>
public bool IsRow { get; set; }
/// <summary>
/// 集計行(列)を詳細データの下(右)にするか
/// </summary>
public bool IsBelowSummaryPosition { get; set; }
}
class GroupingSample {
public void SetGrouping(SpreadsheetGear.IWorksheet worksheet, GroupingDef[] defList) {
//アウトラインの集計行列の位置を設定
if (defList.Count() > 0) {
if (defList[0].IsBelowSummaryPosition) {
if (defList[0].IsRow) {
//詳細データの下
worksheet.Outline.SummaryRow = SpreadsheetGear.SummaryRow.Below;
} else {
//詳細データの右
worksheet.Outline.SummaryColumn = SpreadsheetGear.SummaryColumn.Right;
}
} else {
if (defList[0].IsRow) {
//詳細データの上
worksheet.Outline.SummaryRow = SpreadsheetGear.SummaryRow.Above;
} else {
//詳細データの左
worksheet.Outline.SummaryColumn = SpreadsheetGear.SummaryColumn.Left;
}
}
}
//グループ化設定
foreach (var def in defList) {
SpreadsheetGear.IRange range = worksheet.Cells[def.RowIdx, def.ColIdx, def.RowLen, def.ColLen];
if (def.IsRow) {
//行のグループ化
if (range.EntireRow.OutlineLevel < 8) { //最大8段階
range.EntireRow.Group();
}
} else {
//列のグループ化
if (range.EntireColumn.OutlineLevel < 8) { //最大8段階
range.EntireColumn.Group();
}
}
}
}
}