V5 ドキュメントはプレビュー版です。正式リリース(2026 年 8 月 19 日)まで内容が更新されることがあります。
V4 V5

スタイルは 4 段階で継承されます。下位が指定した値が勝ち、指定していない(null の) プロパティは上位から引き継がれます。

セル ◁ 行 ◁ 列 ◁ シート(RootStyle)

シート・列・行・セルの 4 段階が重なった結果

4 段階

using unvell.ReoGrid.Core;
using unvell.ReoGrid.Core.Style;

ws.RootStyle = ws.RootStyle with { FontFamily = "Meiryo UI", FontSize = 11f };
ws.SetColumnStyle(1, new StyleRecord { TextAlign = HAlign.Right });
ws.SetRowStyle(0, new StyleRecord { Bold = true });
ws.SetCellStyle(0, 1, new StyleRecord { BackgroundColor = 0xFFFFF3CD });

// B1 の実効スタイル:
//   FontFamily = "Meiryo UI"      ← シート
//   TextAlign  = Right            ← 列
//   Bold       = true             ← 行
//   Background = 0xFFFFF3CD       ← セル
StyleRecord effective = ws.GetEffectiveStyle(0, 1);
段階設定方法取得
セルws.SetCellStyle(r, c, style)ws.GetCellStyle(r, c)
ws.SetRowStyle(row, style)ws.GetRowStyle(row)
ws.SetColumnStyle(col, style)ws.GetColumnStyle(col)
シートws.RootStyle同左

行が列より優先されます。 同じプロパティを行と列の両方で指定した場合、行の値が勝ちます。

上書きして継承を打ち消す

ws.SetRowStyle(0, new StyleRecord { Bold = true });

// 行が太字でも、このセルだけ太字にしない
ws.SetCellStyle(0, 3, new StyleRecord { Bold = false });

false は「継承しない」ではなく「明示的にオフ」です。継承させたい場合は null にします。

実効スタイルの取得

GetEffectiveStyle(r, c) は 4 段階を解決した結果を返します。描画・印刷・エクスポートは すべてこれを通ります。

GetCellStyle(r, c) との違いに注意してください。

メソッド返すもの
GetCellStyle(r, c)そのセルに直接設定された指定のみ(未設定なら null
GetEffectiveStyle(r, c)継承を解決した最終結果(常に非 null

合成のしくみ

継承の 1 段階は MergeOver です。

var baseStyle = new StyleRecord { FontSize = 11f, Bold = true };
var over = new StyleRecord { Bold = false, Italic = true };

// over 側で指定されたものが勝ち、null のものは baseStyle が残る
StyleRecord result = baseStyle.MergeOver(over);
// → FontSize = 11, Bold = false, Italic = true

性能上の理由

継承があるおかげで、行・列全体の書式をセル数に依存しないコストで表現できます

// 良い例 — エントリ 1 個
ws.SetColumnStyle(2, new StyleRecord { TextAlign = HAlign.Right });

// 悪い例 — 104 万エントリが実体化する
for (int r = 0; r < ws.RowCount; r++)
	ws.SetCellStyle(r, 2, new StyleRecord { TextAlign = HAlign.Right });

見た目は同じでも、メモリ使用量と処理時間がまったく違います。列全体・行全体に対する 書式は必ず行・列単位の API を使ってください。

UI から選択範囲に書式を適用する場合、コントロール側のヘルパが行・列全体の選択を検出して 自動的に行・列スタイルへ振り分けます。

条件付き書式との関係

条件付き書式は継承チェーンの外側にあり、実効スタイルの上に重ねられます。 条件が一致したセルだけが上書きされ、モデルのスタイルは変更されません。

詳細は 条件付き書式 を参照してください。

次に読む

  • StyleRecord
  • 行と列
ページの内容は役に立ちましたか?