オートフィルタは範囲に対して設定し、列ごとに絞り込み条件を持ちます。

設定と値リスト
using unvell.ReoGrid.Core.Filtering;
AutoFilter filter = ws.CreateAutoFilter(RangePosition.Parse("A1:D100"));
// 値リストで絞る(チェックボックス方式)
filter.SetColumnFilter(1, ["東京", "大阪"]);
filter.Apply();
bool active = filter.HasActiveFilter;
filter.ClearColumn(1);
filter.ClearAll();
ws.RemoveAutoFilter();
範囲の先頭行が見出し行として扱われ、そこにフィルタボタンが描かれます。
SetColumnFilter に渡すのは表示文字列の集合です(数値書式を適用した後の文字列)。
null を渡すとその列の値リストによる絞り込みが解除されます。
Apply() を呼ぶまで行の表示状態は変わりません。 複数列の条件をまとめて設定してから
1 回だけ適用してください。
条件フィルタ
// 単一条件
filter.SetColumnCondition(2, new FilterCondition(FilterOperator.GreaterThan, "1000"));
// 2 句を And / Or で結合(Excel の「オートフィルター オプション」相当)
filter.SetColumnCondition(3, new FilterCondition(
new FilterClause(FilterOperator.GreaterOrEqual, "2026-01-01"),
new FilterClause(FilterOperator.LessThan, "2027-01-01"),
and: true));
filter.Apply();
FilterOperator は 10 種類です。
| 種別 | 演算子 |
|---|---|
| 等価 | Equals NotEquals |
| 大小 | GreaterThan GreaterOrEqual LessThan LessOrEqual |
| 文字列 | Contains NotContains BeginsWith EndsWith |
オペランドは文字列で渡しますが、数値や日付として解釈できる場合は型付きで比較されます。
"> 5"→ 数値比較。文字列のセルは一致しません">= 2026-02-01"→ 日付比較
文字列演算子(Contains など)は表示文字列に対して大文字小文字を区別せず照合します。
空のセルは常に不一致です(Excel と同じ)。
同じ列に値リストと条件の両方を設定した場合、両方を満たす行が残ります(AND)。
候補の取得
// ドロップダウンに出す候補(重複を除いた表示文字列)
List<string> values = filter.GetColumnValues(1);
string title = filter.GetColumnTitle(1);
bool filtered = filter.IsColumnFiltered(1);
独自の UI を作る場合に使います。標準のコントロールはこれを使ってドロップダウンを構築しています。
非表示の 2 系統
フィルタによる非表示は、ユーザーが手で隠した行と区別して管理されます。
| API | 対象 |
|---|---|
ws.Rows.IsFilterHidden(i) | フィルタが隠した |
ws.Rows.IsUserHidden(i) | ユーザーが隠した |
ws.Rows.IsHidden(i) | どちらか |
分けてある理由は、フィルタを解除したときにユーザーが隠した行まで復活させないためです。
ソートとの関係
非表示の行はソート対象から除外されます。フィルタで絞った状態でのソートは、 表示されている行だけを並び替えます。
範囲とボタン
| メンバー | 内容 |
|---|---|
filter.Range | フィルタの適用範囲 |
filter.HeaderRow / FirstDataRow / LastDataRow | 行の境界 |
filter.IsButtonCell(row, col) | そのセルにボタンが描かれるか |
filter.Changed | 条件が変わったときのイベント |
フィルタボタンは任意のセルに描画できる汎用オーバーレイとして実装されています
(XXXX │▽ の形)。将来のテーブル機能やピボットが同じ仕組みを使えるようにするためです。
UI から使う
| メンバー | 内容 |
|---|---|
control.ToggleAutoFilter() | 選択範囲にフィルタを設定・解除 |
保存
reogrid-json と XLSX(<autoFilter>)の両方に往復します。範囲・列ごとの値リスト
(<filters>)・条件(<customFilters>)が保存されます。
Excel には contains 演算子が無いため、テキスト系の演算子は *text* のような
ワイルドカード付きの等値として書き出し、読み戻しで復元します。日付グループのツリーと
色/アイコン/動的フィルタは対象外で、それだけを持つ列はフィルタ無しとして読み込まれます。
ストリーミング読込(OpenVirtual)では行が遅延ロードのため対象外です。