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

unvell.ReoGrid.One を導入済みであることが前提です(インストール)。

最小のアプリ

using System.Windows.Forms;
using unvell.ReoGrid.Core;
using unvell.ReoGrid.Core.Style;
using unvell.ReoGrid.WinForms;

internal static class Program
{
	[STAThread]
	private static void Main()
	{
		// 高 DPI 環境では PerMonitorV2 を指定する。Windows がビットマップ拡大する代わりに
		// 物理ピクセルのクライアント領域が渡され、コントロール側が自前でスケールする。
		Application.SetHighDpiMode(HighDpiMode.PerMonitorV2);

		var grid = new ReoGridControl { Dock = DockStyle.Fill };
		BuildSheet(grid.ActiveWorksheet);

		var form = new Form { Text = "ReoGrid One", Width = 900, Height = 600 };
		form.Controls.Add(grid);
		Application.Run(form);
	}

	private static void BuildSheet(Worksheet sheet)
	{
		sheet.SetText(0, 0, "商品");
		sheet.SetText(0, 1, "単価");
		sheet.SetText(0, 2, "数量");
		sheet.SetText(0, 3, "小計");

		sheet.SetText(1, 0, "ノート");
		sheet.SetNumber(1, 1, 320);
		sheet.SetNumber(1, 2, 12);
		sheet.SetFormula(1, 3, "B2*C2");     // 先頭の '=' は付けない

		sheet.SetText(2, 0, "ボールペン");
		sheet.SetNumber(2, 1, 150);
		sheet.SetNumber(2, 2, 40);
		sheet.SetFormula(2, 3, "B3*C3");

		sheet.SetText(4, 2, "合計");
		sheet.SetFormula(4, 3, "SUM(D2:D3)");

		// 見出し行は「行のスタイル」として設定する(セルを1つずつ回さない)
		sheet.SetRowStyle(0, new StyleRecord
		{
			Bold = true,
			BackgroundColor = 0xFFEFEFEF,      // ARGB
			TextAlign = HAlign.Center,
		});

		sheet.SetNumberFormat(new RangePosition(1, 1, 4, 3), "#,##0");
	}
}

new ReoGridControl()Sheet1 を 1 枚持つワークブックを作った状態で始まります。 ActiveWorksheet でそのシートを取得できます。

押さえておく点

数式に = は付けない

sheet.SetFormula(1, 3, "B2*C2");    // 正しい
sheet.SetFormula(1, 3, "=B2*C2");   // 誤り

SetFormula は数式を解析して依存関係を登録し、そのセルとそれに依存するセルを再計算します。 一括ロード後にシート全体を計算し直したい場合のみ sheet.Recalculate() を呼びます。

色は uint の ARGB

System.Drawing.Color ではなく uint です。コアを System.Drawing から独立させるためで、 不透明色は 0xFF から始まります。

BackgroundColor = 0xFFEFEFEF,   // 不透明のライトグレー
Color = 0xFFCC0000,             // 不透明の赤(文字色)

行・列単位のスタイルを使う

見出し行や列全体の書式は、セルを反復せず SetRowStyle / SetColumnStyle を使ってください。 スタイルは セル ◁ 行 ◁ 列 ◁ シート の順に継承され、行に 1 回設定するだけで済みます。 104 万行のシートでセルを回すと処理量がシート寸法に比例してしまいます。

スタイルは不変レコード

StyleRecordrecord です。既存のスタイルを一部だけ変えるには with 式を使います。

var current = sheet.GetCellStyle(1, 0) ?? StyleRecord.Default;
sheet.SetCellStyle(1, 0, current with { Bold = true });

値を読む

var text = sheet.GetDisplayText(4, 3);        // 書式適用後の表示文字列
var raw = sheet.GetObjectValue(4, 3);         // double / string / bool / DateTime
var cell = sheet.GetValue(4, 3);              // CellValue(構造体・boxing なし)

セル参照で書く

Cell(...) は A1 形式のアドレスを受け取る軽量なカーソルを返します。連鎖して書けます。

sheet.Cell("B2").SetNumber(320);
sheet.Cell("D2").SetFormula("B2*C2");
sheet.Cell("A1").SetText("商品").SetStyle(new StyleRecord { Bold = true });

主なコントロール操作

操作メンバー
選択範囲 / アクティブセルSelectionActiveCellSelectionChanged
元に戻す・やり直すUndo()Redo()CanUndoCanRedo(Ctrl+Z / Ctrl+Y は配線済み)
表示倍率Zoom(0.1〜4.0)・ZoomChanged。Ctrl+ホイールも有効
ウィンドウ枠の固定SetFreeze(rows, cols)
選択範囲の書式ToggleSelectionBold()SetSelectionBackColor(...)SetSelectionNumberFormat(...) など
行列の挿入削除InsertRowsAtSelection()DeleteSelectedRows() ほか
列幅の自動調整AutoFitSelectedColumns()AutoFitSelectedRows()
ワークブックの差し替えLoadWorkbook(workbook)NewWorkbook()LoadJson(json)

次に読む

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