表示形式は Excel と同じ書式コード文字列で指定します。V4 の CellDataFormatFlag*FormatArgs は廃止されました。XLSX との相互運用がロスレスになります。

書式コードと、それを適用した表示結果

適用する

using unvell.ReoGrid.Core;

ws.SetNumberFormat(0, 0, "#,##0");
ws.SetNumberFormat(RangePosition.Parse("B2:B100"), "#,##0.00");
ws.SetNumberFormat(1, 0, "yyyy/mm/dd");
ws.SetNumberFormat(2, 0, "0.00%");

string? code = ws.GetNumberFormat(0, 0);
ws.SetNumberFormat(0, 0, null);      // 書式を外す

範囲を指定するオーバーロードは、指定した範囲のセルすべてに書き込みます。 コントロールの選択範囲に適用する SetSelectionNumberFormat は使用範囲に クランプされますが、コア API はクランプしません — フル列(A:A)を渡すと 104 万セル分のエントリが作られるため、範囲は使用範囲に絞って指定してください。

表示文字列を読む

string shown = ws.GetDisplayText(0, 0);

// 書式コードが色を指定している場合はそれも取れる([Red] など)
string text = ws.GetFormattedText(0, 0, out uint? color);

よく使う書式コード

コード入力表示
#,##012345671,234,567
#,##0.001234.51,234.50
0.00%0.123412.34%
¥#,##01200¥1,200
yyyy/mm/dd日付2026/07/28
yyyy年m月d日日付2026年7月28日
h:mm:ss時刻13:45:30
@文字列そのまま

セクション

書式コードは ; 区切りで最大 4 セクションに分かれます。

正の数 ; 負の数 ; ゼロ ; 文字列
// 正;負;ゼロ;文字列 の 4 セクション
ws.SetNumberFormat(0, 0, "#,##0;[Red]-#,##0;\"-\";@");

// 条件付きセクション
ws.SetNumberFormat(1, 0, "[>=1000000]0.0,,\"M\";[>=1000]0.0,\"K\";0");

セクションを省略した場合の扱いは Excel と同じです(1 つだけならすべての数値に適用、 2 つなら正負に適用)。

色の指定

[Red] のような色指定に対応しています。描画時にセルの文字色を上書きします。

使える色
[Black] [Blue] [Cyan] [Green] [Magenta] [Red] [White] [Yellow]

GetFormattedText(r, c, out uint? color) はこの色を返します。書式が色を指定していなければ null です。

条件

[>=1000] のような条件をセクションの先頭に置けます。上から順に評価され、 最初に一致したセクションが使われます。

和暦(元号)

g 系のトークンが元号名、e 系が元号内の年です。Excel の和暦書式と同じ綴りで書けます。

コード2025-06-09 の表示
gR
gg
ggg令和
e7
ee07
[$-411]ge.m.dR7.6.9
[$-411]ggge"年"m"月"d"日"令和7年6月9日

y は元号と併用しても西暦のままです(和暦の年は e)。年の区切りは Excel と同じく 暦年単位で、たとえば 2019-04-30 は 平成31、2019-05-01 は 令和1 になります。

元年表記

[$-ja-JP-x-gannen] を付けると、元号の 1 年目を「元」と表示します(e / ee のどちらでも 「元」)。付けなければ 1 です。

コード入力表示
[$-ja-JP-x-gannen]ggge"年"m"月"d"日"2019-05-01令和元年5月1日
ggge"年"m"月"d"日"2019-05-01令和1年5月1日

元号表

明治・大正・昭和・平成・令和を内蔵しています。OS のカレンダーデータ(Windows のレジストリ / ICU)は参照しないため、実行環境や OS の更新状況によって表示が変わることはありません。 新元号が発表されてからライブラリの更新が届くまでの間は、起動時に JapaneseEras.Register で 登録すれば先行して使えます。

using unvell.ReoGrid.Core.Style;

ws.SetNumberFormat(0, 0, "[$-411]ggge\"\"m\"\"d\"\"");

// 新元号は、ライブラリの更新を待たずに起動時に登録できる
JapaneseEras.Register(new JapaneseEra("X", "新", "新元", new DateTime(2035, 1, 1)));

XLSX 側で書式コードを持たない locale 予約の numFmtId(27–36 / 50–58)も、Excel(日本語)と 同じ和暦書式として読み込みます。数式の TEXT 関数も同じエンジンを通るため、 TEXT(A1,"ggge年m月d日") はセルの表示と一致します。

現在の制限

以下は未対応です。

  • 分数# ?/?
  • 指数0.00E+00

これらの書式コードを設定してもエラーにはなりませんが、期待どおりには表示されません。

直接フォーマットする

シートを介さずに書式を適用したい場合に使えます。

using unvell.ReoGrid.Core.Style;

if (NumberFormatter.TryFormat(1234.5, "#,##0.00", out string text, out uint? color))
	Console.WriteLine(text);      // "1,234.50"

書式コードを適用できない場合(解釈できないコードのほか、General や 空文字のように整形を行わないコードも含む)は false を返します。

保存

数値書式はセル単位で reogrid-json と XLSX の双方に往復します。XLSX では numFmt として書き出されるため、Excel で開いても同じ表示になります。

次に読む

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