行、列、ヘッダー

このガイドでは、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);

定義済みの値

初期値最小値最大値データ型
行数20011,048,576ページングインデックス付き二次元配列
列数100132,768ページングインデックス付き二次元配列
行の高さ(ピクセル)20065,535ushort
列の幅(ピクセル)70065,535ushort

デフォルトの初期化サイズを変更することもできます:

// Set default sizes before creating worksheets
Worksheet.InitializationRows = 500;
Worksheet.InitializationColumns = 200;

23

追加 / 挿入 / 削除

行と列の追加

グリッドの末尾に行または列を追加します:

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);

38

カスタム高さ/幅関数の使用

関数を使用して、各行または列に異なる高さ/幅を設定できます:

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

注意: SetRowsHeightActionSetColumnsWidthAction のコンストラクターは、開始インデックス、数量、新しいサイズ(ピクセル)を受け取ります。これらのアクションはReoGridの元に戻す/やり直しフレームワークと統合されています。 39

ヘッダーインスタンスによる高さと幅の取得

// 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;

注意: パフォーマンスに関する注意: 複数の行または列の高さや幅を変更する場合は、個別のヘッダープロパティを設定するのではなく、ワークシートメソッド(SetRowsHeightSetColumnsWidth)を使用してください。ワークシートメソッドは操作をバッチ処理し、大幅にパフォーマンスが向上します。

推奨:

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は、編集によってセルの値が変更された場合に、行の高さを自動的に調整します: 22

行の高さの自動調整を無効にする

個別の行に対して高さの自動調整を無効にします:

sheet.RowHeaders[2].IsAutoHeight = false;

行の高さと列の幅の自動フィット

ヘッダー間のセパレーターをダブルクリックすると、ReoGridは最大のセルコンテンツに合わせて行の高さまたは列の幅を調整します。

前: 218

後: 219

プログラムによる自動フィット

// 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本の線として表示されます: 96

注意: - HideRowsHideColumns は、非表示にする行や列を含むアウトラインを自動的に折りたたみます。

  • ShowRowsShowColumns は、表示する行や列を含むアウトラインを自動的に展開します。 例: 58 アウトラインでグループ化された行を非表示にする: 59 アウトラインが自動的に折りたたまれる: 60

詳細についてはグループとアウトラインを参照してください。

ヘッダーインスタンスによる非表示

// 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

共通ヘッダープロパティ

すべてのヘッダー(行と列の両方)は以下の基本プロパティを共有します:

プロパティ説明
Indexintヘッダーのゼロベースインデックス(読み取り専用)
IsVisiblebool行/列が表示されているか
IsVisibleToUserboolIsVisible とサイズ > 0 の両方を考慮した表示状態(読み取り専用)
Tagobjectユーザー定義のデータストレージ
BodyIHeaderBodyカスタム描画用のカスタムヘッダーボディ
DefaultCellBodyTypeこの行/列のすべてのセルのデフォルトセルボディタイプ

行ヘッダープロパティ

プロパティ説明
Textstring行ヘッダーの表示テキスト
TextColorSolidColor?ヘッダーテキストの色
Heightushort行の高さ(ピクセル)
Topint上位置(ピクセル)(読み取り専用)
Bottomint下位置(ピクセル)(読み取り専用)
IsAutoHeightbool最大セルに合わせた高さの自動調整を許可する
IsSelectedbool行が選択されているか(読み取り専用)

列ヘッダープロパティ

プロパティ説明
Textstring列ヘッダーの表示テキスト
TextColorSolidColor?ヘッダーテキストの色
AddressTextstring列アドレス(例:"A"、"B"、"Z")(読み取り専用)
Widthushort列の幅(ピクセル)
Leftint左位置(ピクセル)(読み取り専用)
Rightint右位置(ピクセル)(読み取り専用)
IsAutoWidthbool幅の自動調整を許可する
HeaderCellHeaderCellこの列ヘッダーのHeaderCellインスタンス(読み取り専用)

ヘッダーテキストのカスタマイズ

列ヘッダーテキストの変更

sheet.ColumnHeaders[0].Text = "Product";
sheet.ColumnHeaders[1].Text = "Price";
sheet.ColumnHeaders[2].Text = "Quantity";

Custom Header

行ヘッダーテキストの変更

sheet.RowHeaders[0].Text = "Item 1";
sheet.RowHeaders[1].Text = "Item 2";

117

行ヘッダー幅の変更

行ヘッダー領域の幅を変更して、より多くのテキストを表示できます:

sheet.RowHeaderWidth = 100;
sheet.RowHeaders[1].Text = "Row Header";

116

特殊な値への設定:

  • 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プロパティ

プロパティデフォルト説明
TextColorSolidColor?null(システムデフォルト)ヘッダーテキストの色。null に設定すると削除されます。
BackColorSolidColor?null(システムデフォルト)背景色。null に設定すると削除されます。
FontSizefloat12f(WinForms)フォントサイズ
Fontstring / FontFamily"Arial"(WinForms)フォント名(WinForms)またはFontFamily(WPF)
FontStyleFontStyles / FontStyleRegularフォントスタイル(太字、斜体など)
HorizontalAlignmentReoGridHorAlignCenterテキストの水平揃え
VerticalAlignmentReoGridVerAlignMiddleテキストの垂直揃え
PaddingPaddingValue(空)セルのパディング

例:行ヘッダーの外観をカスタマイズ

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);

セルタイプを設定しただけでは何も表示されません。セルボディはセルデータが設定された場合にのみ表示されます: 110

sheet["A1:A5"] = new object[] { false, true, false, false, true };

チェックボックスセルはデータとして bool 値を受け取ります: 111

カスタムヘッダーボディ

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;

イベント

行と列の構造イベント

イベントイベント引数説明
RowsInsertedRowsInsertedEventArgs行が挿入された時に発生
RowsDeletedRowsDeletedEventArgs行が削除された時に発生
ColumnsInsertedColumnsInsertedEventArgs列が挿入された時に発生
ColumnsDeletedColumnsDeletedEventArgs列が削除された時に発生
RowsHeightChangedRowsHeightChangedEventArgs行の高さが変更された時に発生
ColumnsWidthChangedColumnsWidthChangedEventArgs列の幅が変更された時に発生

イベント引数のプロパティ

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

関連トピック


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