このガイドでは、ReoGridにおける行、列、ヘッダーの管理について説明します。基本的な挿入/削除操作からヘッダーのカスタマイズ、スタイル設定、表示制御、イベントまでを網羅しています。
行数と列数
取得と設定
プロパティまたはメソッドを使用して、行数と列数を取得・設定します:
var sheet = grid.CurrentWorksheet;
// Get current counts
int rowCount = sheet.RowCount; // or sheet.Rows
int colCount = sheet.ColumnCount; // or sheet.Columns
// Set counts
sheet.RowCount = 500;
sheet.ColumnCount = 50;
// Or use methods
sheet.SetRows(500);
sheet.SetCols(50);
// Resize both at once
sheet.Resize(500, 50);
定義済みの値
| 初期値 | 最小値 | 最大値 | データ型 | |
|---|---|---|---|---|
| 行数 | 200 | 1 | 1,048,576 | ページングインデックス付き二次元配列 |
| 列数 | 100 | 1 | 32,768 | ページングインデックス付き二次元配列 |
| 行の高さ(ピクセル) | 20 | 0 | 65,535 | ushort |
| 列の幅(ピクセル) | 70 | 0 | 65,535 | ushort |
デフォルトの初期化サイズを変更することもできます:
// Set default sizes before creating worksheets
Worksheet.InitializationRows = 500;
Worksheet.InitializationColumns = 200;

追加 / 挿入 / 削除
行と列の追加
グリッドの末尾に行または列を追加します:
sheet.AppendRows(10); // Append 10 rows at the bottom
sheet.AppendColumns(5); // Append 5 columns at the right
行と列の挿入
指定した位置の前に行または列を挿入します:
// Insert 3 rows before row index 5
sheet.InsertRows(5, 3);
// Insert 2 columns before column index 2
sheet.InsertColumns(2, 2);
行と列の削除
指定した位置から行または列を削除します:
// Delete 3 rows starting from row index 5
sheet.DeleteRows(5, 3);
// Delete 2 columns starting from column index 2
sheet.DeleteColumns(2, 2);
注意: 上記のすべてのメソッドで、最初のパラメーターはゼロベースのインデックス、2番目のパラメーターは数量です。常に少なくとも1行1列が残っている必要があります。
アクションの使用(元に戻す/やり直し対応)
すべての行/列操作はアクションを通じて実行でき、元に戻す、やり直し、繰り返しをサポートします:
// Insert rows/columns with undo support
sheet.DoAction(new InsertRowsAction(5, 3));
sheet.DoAction(new InsertColumnsAction(2, 2));
// Delete rows/columns with undo support
sheet.DoAction(new RemoveRowsAction(5, 3));
sheet.DoAction(new RemoveColumnsAction(2, 2));
行の高さと列の幅
高さと幅の設定
行または列の範囲に対して高さまたは幅を設定します:
// Set height for rows 0–9 to 30 pixels
sheet.SetRowsHeight(0, 10, 30);
// Set width for columns 0–4 to 120 pixels
sheet.SetColumnsWidth(0, 5, 120);
// Set all rows to the same height
sheet.SetRowsHeight(0, sheet.RowCount, 25);
// Set all columns to the same width
sheet.SetColumnsWidth(0, sheet.ColumnCount, 100);

カスタム高さ/幅関数の使用
関数を使用して、各行または列に異なる高さ/幅を設定できます:
// Set varying heights: row 0 = 20px, row 1 = 25px, row 2 = 30px, ...
sheet.SetRowsHeight(0, 10, row => 20 + row * 5);
// Set varying widths
sheet.SetColumnsWidth(0, 5, col => 80 + col * 20);
アクションの使用(元に戻す/やり直し対応)
sheet.DoAction(new SetRowsHeightAction(0, 10, 30));
sheet.DoAction(new SetColumnsWidthAction(0, 5, 120));
注意:
SetRowsHeightActionとSetColumnsWidthActionのコンストラクターは、開始インデックス、数量、新しいサイズ(ピクセル)を受け取ります。これらのアクションはReoGridの元に戻す/やり直しフレームワークと統合されています。
ヘッダーインスタンスによる高さと幅の取得
// Get height of a specific row
int height = sheet.RowHeaders[2].Height;
// Get width of a specific column
int width = sheet.ColumnHeaders[3].Width;
// Get position information
int top = sheet.RowHeaders[2].Top;
int bottom = sheet.RowHeaders[2].Bottom;
int left = sheet.ColumnHeaders[3].Left;
int right = sheet.ColumnHeaders[3].Right;
ヘッダーインスタンスによる高さと幅の設定
sheet.RowHeaders[3].Height = 40;
sheet.ColumnHeaders[2].Width = 150;
注意: パフォーマンスに関する注意: 複数の行または列の高さや幅を変更する場合は、個別のヘッダープロパティを設定するのではなく、ワークシートメソッド(
SetRowsHeight、SetColumnsWidth)を使用してください。ワークシートメソッドは操作をバッチ処理し、大幅にパフォーマンスが向上します。推奨:
sheet.SetRowsHeight(2, 3, 30); // from index 2, 3 rows, height 30非推奨:
sheet.RowHeaders[2].Height = 30; sheet.RowHeaders[3].Height = 30; sheet.RowHeaders[4].Height = 30;
行の高さの自動調整
ReoGridは、編集によってセルの値が変更された場合に、行の高さを自動的に調整します:

行の高さの自動調整を無効にする
個別の行に対して高さの自動調整を無効にします:
sheet.RowHeaders[2].IsAutoHeight = false;
行の高さと列の幅の自動フィット
ヘッダー間のセパレーターをダブルクリックすると、ReoGridは最大のセルコンテンツに合わせて行の高さまたは列の幅を調整します。
前:

後:

プログラムによる自動フィット
// Auto-fit column width for column 0 (A)
sheet["A2"] = "This is a long text";
sheet.AutoFitColumnWidth(0, false);
// Auto-fit row heights for rows 0–9
sheet.AutoFitRowsHeight(0, 10, false);
2番目の引数は、アクションを使用するかどうかを指定します(Undo() またはCtrl+Zによる元に戻しが可能になります)。
列の幅の自動調整
個別の列に対して自動幅を有効にします:
sheet.ColumnHeaders[0].IsAutoWidth = true;
行/列の非表示と表示
非表示と表示
// Hide rows
sheet.HideRows(3, 2); // Hide 2 rows starting from row 3
// Show (unhide) rows
sheet.ShowRows(3, 2);
// Hide columns
sheet.HideColumns(1, 3); // Hide 3 columns starting from column 1
// Show (unhide) columns
sheet.ShowColumns(1, 3);
非表示の行または列は1本の線として表示されます:

注意: -
HideRowsとHideColumnsは、非表示にする行や列を含むアウトラインを自動的に折りたたみます。
ShowRowsとShowColumnsは、表示する行や列を含むアウトラインを自動的に展開します。 例:アウトラインでグループ化された行を非表示にする:
アウトラインが自動的に折りたたまれる:
詳細についてはグループとアウトラインを参照してください。
ヘッダーインスタンスによる非表示
// Hide a row
sheet.RowHeaders[3].IsVisible = false;
// Hide a column
sheet.ColumnHeaders[2].IsVisible = false;
表示状態の確認
// Check row/column visibility
bool rowVisible = sheet.IsRowVisible(3);
bool colVisible = sheet.IsColumnVisible(2);
// Check visibility to user (considers filtering as well)
bool rowVisibleToUser = sheet.IsRowVisibleToUser(3);
bool colVisibleToUser = sheet.IsColumnVisibleToUser(2);
// Via header instances
bool visible = sheet.RowHeaders[3].IsVisible;
bool visibleToUser = sheet.RowHeaders[3].IsVisibleToUser;
セルの表示状態の確認
bool hidden = sheet.IsCellVisible(3, 2);
// Via cell instance
var cell = sheet.Cells["H8"];
bool cellVisible = cell.IsVisible;
ヘッダーインスタンス
ワークシートから個別のヘッダーオブジェクトにアクセスします:
var sheet = grid.CurrentWorksheet;
// Get header instances by index
var rowHeader = sheet.RowHeaders[3];
var colHeader = sheet.ColumnHeaders[2];
// Get column header by address
var colHeaderA = sheet.ColumnHeaders["A"];
var colHeaderZ = sheet.ColumnHeaders["Z"];
// Worksheet methods
var rowHeader2 = sheet.GetRowHeader(3); // returns null if out of range
var colHeader2 = sheet.GetColumnHeader(2); // returns null if out of range
共通ヘッダープロパティ
すべてのヘッダー(行と列の両方)は以下の基本プロパティを共有します:
| プロパティ | 型 | 説明 |
|---|---|---|
Index | int | ヘッダーのゼロベースインデックス(読み取り専用) |
IsVisible | bool | 行/列が表示されているか |
IsVisibleToUser | bool | IsVisible とサイズ > 0 の両方を考慮した表示状態(読み取り専用) |
Tag | object | ユーザー定義のデータストレージ |
Body | IHeaderBody | カスタム描画用のカスタムヘッダーボディ |
DefaultCellBody | Type | この行/列のすべてのセルのデフォルトセルボディタイプ |
行ヘッダープロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
Text | string | 行ヘッダーの表示テキスト |
TextColor | SolidColor? | ヘッダーテキストの色 |
Height | ushort | 行の高さ(ピクセル) |
Top | int | 上位置(ピクセル)(読み取り専用) |
Bottom | int | 下位置(ピクセル)(読み取り専用) |
IsAutoHeight | bool | 最大セルに合わせた高さの自動調整を許可する |
IsSelected | bool | 行が選択されているか(読み取り専用) |
列ヘッダープロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
Text | string | 列ヘッダーの表示テキスト |
TextColor | SolidColor? | ヘッダーテキストの色 |
AddressText | string | 列アドレス(例:"A"、"B"、"Z")(読み取り専用) |
Width | ushort | 列の幅(ピクセル) |
Left | int | 左位置(ピクセル)(読み取り専用) |
Right | int | 右位置(ピクセル)(読み取り専用) |
IsAutoWidth | bool | 幅の自動調整を許可する |
HeaderCell | HeaderCell | この列ヘッダーのHeaderCellインスタンス(読み取り専用) |
ヘッダーテキストのカスタマイズ
列ヘッダーテキストの変更
sheet.ColumnHeaders[0].Text = "Product";
sheet.ColumnHeaders[1].Text = "Price";
sheet.ColumnHeaders[2].Text = "Quantity";

行ヘッダーテキストの変更
sheet.RowHeaders[0].Text = "Item 1";
sheet.RowHeaders[1].Text = "Item 2";

行ヘッダー幅の変更
行ヘッダー領域の幅を変更して、より多くのテキストを表示できます:
sheet.RowHeaderWidth = 100;
sheet.RowHeaders[1].Text = "Row Header";

特殊な値への設定:
0— 行ヘッダー領域を非表示にする-1— システムデフォルトの幅に戻す
ヘッダーテキスト色の変更
// Set text color for a specific column header
sheet.ColumnHeaders[0].TextColor = new SolidColor(Color.Red);
// Set text color for a specific row header
sheet.RowHeaders[0].TextColor = new SolidColor(Color.Blue);
// Remove custom text color (revert to default)
sheet.ColumnHeaders[0].TextColor = null;
行ヘッダースタイル
ReoGridはワークシート上のすべての行ヘッダーをグローバルにスタイリングするための RowHeaderStyle オブジェクトを提供しています。RowHeaderStyle プロパティからアクセスできます:
var style = sheet.RowHeaderStyle;
RowHeaderStyleプロパティ
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
TextColor | SolidColor? | null(システムデフォルト) | ヘッダーテキストの色。null に設定すると削除されます。 |
BackColor | SolidColor? | null(システムデフォルト) | 背景色。null に設定すると削除されます。 |
FontSize | float | 12f(WinForms) | フォントサイズ |
Font | string / FontFamily | "Arial"(WinForms) | フォント名(WinForms)またはFontFamily(WPF) |
FontStyle | FontStyles / FontStyle | Regular | フォントスタイル(太字、斜体など) |
HorizontalAlignment | ReoGridHorAlign | Center | テキストの水平揃え |
VerticalAlignment | ReoGridVerAlign | Middle | テキストの垂直揃え |
Padding | PaddingValue | (空) | セルのパディング |
例:行ヘッダーの外観をカスタマイズ
var style = sheet.RowHeaderStyle;
// Change font
style.Font = "Consolas";
style.FontSize = 10;
// Change colors
style.TextColor = new SolidColor(Color.DarkBlue);
style.BackColor = new SolidColor(Color.LightGray);
// Change alignment
style.HorizontalAlignment = ReoGridHorAlign.Left;
style.Padding = new PaddingValue(4, 0, 4, 0); // left, top, right, bottom
行ヘッダースタイルのリセット
sheet.RowHeaderStyle.Reset();
ヘッダー領域の表示/非表示
ワークシート設定を使用してヘッダーの表示を制御します:
// Hide column headers
sheet.SetSettings(WorksheetSettings.View_ShowColumnHeader, false);
// Hide row headers
sheet.SetSettings(WorksheetSettings.View_ShowRowHeader, false);
// Show them again
sheet.SetSettings(WorksheetSettings.View_ShowColumnHeader, true);
sheet.SetSettings(WorksheetSettings.View_ShowRowHeader, true);
// Check current setting
bool showColHeader = sheet.HasSettings(WorksheetSettings.View_ShowColumnHeader);
列のデフォルトセルタイプ
列全体にデフォルトのセルタイプを指定できます。その列にセルが作成されると、指定されたセルボディが自動的に使用されます:
// Set column A to use CheckBoxCell
sheet.ColumnHeaders["A"].DefaultCellBody = typeof(unvell.ReoGrid.CellTypes.CheckBoxCell);
// Set horizontal alignment for the column
sheet.ColumnHeaders["A"].Style.HorizontalAlign = ReoGridHorAlign.Center;
// Give the checkbox a small padding
sheet.ColumnHeaders["A"].Style.Padding = new System.Windows.Forms.Padding(2);
セルタイプを設定しただけでは何も表示されません。セルボディはセルデータが設定された場合にのみ表示されます:

sheet["A1:A5"] = new object[] { false, true, false, false, true };
チェックボックスセルはデータとして bool 値を受け取ります:

カスタムヘッダーボディ
IHeaderBody インターフェースを実装し、ヘッダーの Body プロパティに割り当てることで、カスタムヘッダー描画を作成できます:
// Assign a custom header body to a column header
sheet.ColumnHeaders[0].Body = new MyCustomHeaderBody();
IHeaderBody インターフェースにより、個別のヘッダーに対してカスタム描画、マウス操作、サイズ調整のロジックを定義できます。
ユーザーデータ(Tag)
任意のユーザーデータをヘッダーにアタッチできます:
// Store custom data
sheet.RowHeaders[0].Tag = new { Category = "Sales", Priority = 1 };
sheet.ColumnHeaders[0].Tag = "PrimaryKey";
// Retrieve it later
var tag = sheet.ColumnHeaders[0].Tag;
イベント
行と列の構造イベント
| イベント | イベント引数 | 説明 |
|---|---|---|
RowsInserted | RowsInsertedEventArgs | 行が挿入された時に発生 |
RowsDeleted | RowsDeletedEventArgs | 行が削除された時に発生 |
ColumnsInserted | ColumnsInsertedEventArgs | 列が挿入された時に発生 |
ColumnsDeleted | ColumnsDeletedEventArgs | 列が削除された時に発生 |
RowsHeightChanged | RowsHeightChangedEventArgs | 行の高さが変更された時に発生 |
ColumnsWidthChanged | ColumnsWidthChangedEventArgs | 列の幅が変更された時に発生 |
イベント引数のプロパティ
RowsInsertedEventArgs / RowsDeletedEventArgs:
Row(int) — 開始行インデックスCount(int) — 影響を受ける行数
ColumnsInsertedEventArgs / ColumnsDeletedEventArgs:
Index(int) — 開始列インデックスCount(int) — 影響を受ける列数
RowsHeightChangedEventArgs:
Row(int) — 開始行インデックスCount(int) — 影響を受ける行数Height(int) — 新しい高さの値
ColumnsWidthChangedEventArgs:
Index(int) — 開始列インデックスCount(int) — 影響を受ける列数Width(int) — 新しい幅の値
例:行/列イベントのリッスン
sheet.RowsInserted += (s, e) =>
{
Console.WriteLine($"Inserted {e.Count} rows at row {e.Row}");
};
sheet.ColumnsWidthChanged += (s, e) =>
{
Console.WriteLine($"Width changed for {e.Count} columns starting at {e.Index}, new width: {e.Width}");
};
個別ヘッダーイベント
行ヘッダーと列ヘッダーは、それぞれのインスタンスでイベントを発火します:
// Listen to height changes on a specific row
sheet.RowHeaders[3].HeightChanged += (s, e) =>
{
Console.WriteLine($"Row 3 height changed to {e.Height}");
};
// Listen to width changes on a specific column
sheet.ColumnHeaders[2].WidthChanged += (s, e) =>
{
Console.WriteLine($"Column 2 width changed to {e.Width}");
};
関連トピック
- 複数行ヘッダー — 複数行の列ヘッダーの作成
- グループとアウトライン — 展開/折りたたみ付きの行/列グループ化
- ウィンドウ枠の固定 — 行と列の固定
- データフィルタリング — データによる行フィルタリング
- ワークシート設定 — ヘッダーの表示を含むすべてのワークシート設定
- セルタイプ — 列ごとのデフォルトセルタイプの設定

アウトラインでグループ化された行を非表示にする:
アウトラインが自動的に折りたたまれる:
