表示形式は 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] のような条件をセクションの先頭に置けます。上から順に評価され、
最初に一致したセクションが使われます。
現在の制限
以下は未対応です。
- 分数(
# ?/?) - 指数(
0.00E+00) - 和暦(
[$-411]ggge年m月d日)
これらの書式コードを設定してもエラーにはなりませんが、期待どおりには表示されません。
直接フォーマットする
シートを介さずに書式を適用したい場合に使えます。
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 で開いても同じ表示になります。
次に読む
- StyleRecord
- XLSX 入出力