行や列をグループ化して折りたためます。Excel の「グループ化」と同じ機能です。

グループ化する
// 2〜9 行目をグループ化
var group = ws.GroupRows(1, 8);
ws.RowOutlines.Collapse(group);
ws.RowOutlines.Expand(group);
ws.RowOutlines.Toggle(group);
ws.UngroupRows(1, 8);
列も同様です — ws.GroupColumns(col, count) / ws.UngroupColumns(col, count)。
階層
グループを入れ子にすると階層になります。最大 9 レベルです。
int levels = ws.RowOutlines.LevelCount;
bool has = ws.HasRowOutlines;
ws.RowOutlines.CollapseToLevel(1); // レベル 1 まで畳む
foreach (var (level, g) in ws.RowOutlines.AllGroups())
Console.WriteLine($"L{level}: {g.Start}..{g.End} collapsed={g.Collapsed}");
HasRowOutlines は OutlineManager を生成せずに判定します。アウトラインを使っていない
シートでは、マネージャ自体が存在しません。
集計行の位置
既定では集計行がグループの下にあります(Excel の既定と同じ)。
SummaryAfter を false にすると上になります。
ws.RowOutlines.SummaryAfter = false;
折りたたみボタンが描かれる位置もこれに従います(ToggleIndex)。
OutlineGroup
| プロパティ | 内容 |
|---|---|
Start | 開始位置 |
Count | 本数 |
End | Start + Count |
Collapsed | 折りたたみ状態 |
グループの操作は OutlineManager 経由で行ってください(Collapsed を直接書き換えても
行の表示状態は更新されません)。
非表示との関係
折りたたみによる非表示は OutlineManager が管理します。HiddenLines で
現在どの行が折りたたみによって隠れているかを取得できます。
主なメンバー(OutlineManager)
| メンバー | 内容 |
|---|---|
AddGroup(start, count) / RemoveGroup(start, count) | グループの追加・削除 |
Collapse(g) / Expand(g) / Toggle(g) | 折りたたみ |
CollapseToLevel(level) | 指定レベルまで畳む |
LevelCount / MaxLevel / HasOutlines | 階層の状態 |
LevelOf(line) | ある行が属する最も深いレベル |
GroupsAtLevel(level) / AllGroups() | グループの列挙 |
FindGroup(level, start) | 特定のグループを探す |
HiddenLines | 折りたたみで隠れている行 |
表示
コントロールの ShowOutlines プロパティでアウトライン領域の表示を切り替えます。
保存
reogrid-json と XLSX の双方に往復します。XLSX ではレベルと折りたたみ状態が 行・列の属性として保存されるため、Excel で開いても同じ状態になります。
制限
アウトラインの操作は元に戻せません。 グループ化・解除は現時点で履歴に載りません。 値の編集や行の挿入削除は通常どおり元に戻せます。