V4 V5

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

2 つの行グループ。上のグループは折りたたまれている

グループ化する

// 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}");

HasRowOutlinesOutlineManager を生成せずに判定します。アウトラインを使っていない シートでは、マネージャ自体が存在しません。

集計行の位置

既定では集計行がグループの下にあります(Excel の既定と同じ)。 SummaryAfterfalse にすると上になります。

ws.RowOutlines.SummaryAfter = false;

折りたたみボタンが描かれる位置もこれに従います(ToggleIndex)。

OutlineGroup

プロパティ内容
Start開始位置
Count本数
EndStart + 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 で開いても同じ状態になります。

制限

アウトラインの操作は元に戻せません。 グループ化・解除は現時点で履歴に載りません。 値の編集や行の挿入削除は通常どおり元に戻せます。

次に読む

ページの内容は役に立ちましたか?