表示形式は 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);
よく使う書式コード
| コード | 入力 | 表示 |
|---|---|---|
#,##0 | 1234567 | 1,234,567 |
#,##0.00 | 1234.5 | 1,234.50 |
0.00% | 0.1234 | 12.34% |
¥#,##0 | 1200 | ¥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 の表示 |
|---|---|
g | R |
gg | 令 |
ggg | 令和 |
e | 7 |
ee | 07 |
[$-411]ge.m.d | R7.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 で開いても同じ表示になります。