ReoGridはデータフォーマッターを通じてセルの表示と解析を書式設定します。サポートされている書式タイプには、数値、日付、パーセント、通貨、テキスト、カスタムフォーマッターがあります。
名前空間
using unvell.ReoGrid.DataFormat;
データ書式の適用
ワークシートの SetRangeDataFormat を使用します。
var sheet = reoGridControl.CurrentWorksheet;
sheet.SetRangeDataFormat("A1:B2", CellDataFormatFlag.Number,
new NumberDataFormatter.NumberFormatArgs
{
DecimalPlaces = 4,
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.RedBrackets,
UseSeparator = true,
});
元に戻す機能付き:
reoGridControl.DoAction(new SetRangeDataFormatAction("A1:B2",
CellDataFormatFlag.Number,
new NumberDataFormatter.NumberFormatArgs { DecimalPlaces = 2 }));
クイックテスト:
sheet["B2"] = 12345;
sheet["C2"] = 12345.67890;
sheet["B3"] = -1234;
sheet["C3"] = -1234.56789;

CellDataFormatFlag列挙型
| 値 | 説明 | 引数の型 |
|---|---|---|
General | 自動書式(テキストと数値) | なし |
Number | 数値書式 | NumberDataFormatter.NumberFormatArgs |
DateTime | 日付と時刻の書式 | DateTimeDataFormatter.DateTimeFormatArgs |
Percent | パーセント書式 | NumberDataFormatter.NumberFormatArgs |
Currency | 通貨書式 | CurrencyDataFormatter.CurrencyFormatArgs |
Text | プレーンテキスト(書式なし) | なし |
Custom | カスタムデータフォーマッター | 任意のオブジェクト |
数値書式
数値書式は桁区切り、小数点以下の桁数、負の数値スタイルをサポートします。

sheet.SetRangeDataFormat("A1:E7", CellDataFormatFlag.Number,
new NumberDataFormatter.NumberFormatArgs
{
DecimalPlaces = 4,
UseSeparator = true,
});
NumberFormatArgsのプロパティ
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
DecimalPlaces | short | 2 | 表示する小数点以下の桁数 |
UseSeparator | bool | false | 桁区切りを表示 |
NegativeStyle | NumberNegativeStyle | Minus | 負の数値の表示方法 |
CustomNegativePrefix | string | null | 負の数値のカスタム接頭辞(CustomSymbol スタイルで使用) |
CustomNegativePostfix | string | null | 負の数値のカスタム接尾辞(CustomSymbol スタイルで使用) |
NumberNegativeStyle列挙型(フラグ)
| スタイル | 値 | 例 | 説明 |
|---|---|---|---|
Minus(デフォルト) | 0x1 | -123,456.789 | 通常のマイナス記号 |
Red | 0x2 | 123,456.789 | 赤テキスト、マイナスなし |
Brackets | 0x4 | (123,456.789) | 括弧で囲む |
RedMinus | 0x3 | -123,456.789 | 赤テキストとマイナス |
BracketsMinus | 0x5 | (-123,456.789) | 括弧とマイナス |
RedBrackets | 0x6 | (123,456.789) | 赤テキストと括弧 |
RedBracketsMinus | 0x7 | (-123,456.789) | 赤、括弧、マイナス |
Prefix_Sankaku | 0x8 | ▲ 123,456.789 | 日本式三角接頭辞 |
CustomSymbol | 0xf0 | — | CustomNegativePrefix / CustomNegativePostfix を使用 |
これはフラグ列挙型です。値は | で組み合わせることができます。
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.Brackets | NumberDataFormatter.NumberNegativeStyle.Red
負の数値の例

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Number,
new NumberDataFormatter.NumberFormatArgs
{
DecimalPlaces = 3,
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.RedBrackets,
UseSeparator = true,
});
sheet["B2"] = -12345.67;
日付時刻書式
カルチャと書式パターンを標準の.NET日付時刻パターンで指定します。

sheet.SetRangeDataFormat(RangePosition.EntireRange, CellDataFormatFlag.DateTime,
new DateTimeDataFormatter.DateTimeFormatArgs
{
CultureName = "en-US",
Format = "yyyy/MM/dd",
});
DateTimeFormatArgsのプロパティ
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
Format | string | null | .NET日付時刻書式パターン(例: "yyyy/MM/dd"、"MM/dd/yyyy HH:mm") |
CultureName | string | null | ローカリゼーション用のカルチャ名(例: "en-US"、"ja-JP") |
注意:
DateTimeFormatArgsはクラスではなくstructです。
パーセント書式
値はパーセントとして表示されます。設定には NumberFormatArgs を使用します。

sheet.SetRangeDataFormat(RangePosition.EntireRange, CellDataFormatFlag.Percent,
new NumberDataFormatter.NumberFormatArgs
{
DecimalPlaces = 2,
});
セル値 0.5 は 50.00% と表示されます。
通貨書式
通貨は数値書式を拡張し、値の前または後に通貨記号を配置します。

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Currency,
new CurrencyDataFormatter.CurrencyFormatArgs
{
CultureEnglishName = "en-US",
DecimalPlaces = 2,
UseSeparator = true,
PrefixSymbol = "$",
});
sheet["B2"] = 1234;
CurrencyFormatArgsのプロパティ
CurrencyFormatArgs は NumberFormatArgs を継承し、通貨固有のプロパティを追加します。
| プロパティ | 型 | デフォルト | 説明 |
|---|---|---|---|
PrefixSymbol | string | null | 数値の前に配置する記号(例: "$"、"$ ") |
PostfixSymbol | string | null | 数値の後に配置する記号(例: " USD"、" 円") |
CultureEnglishName | string | null | カルチャ名(例: "en-US") |
DecimalPlaces | short | 2 | 小数点以下の桁数(継承) |
UseSeparator | bool | false | 桁区切りを表示(継承) |
NegativeStyle | NumberNegativeStyle | Minus | 負の数値の表示スタイル(継承) |
スペース付き接頭辞

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Currency,
new CurrencyDataFormatter.CurrencyFormatArgs
{
CultureEnglishName = "en-US",
DecimalPlaces = 2,
UseSeparator = true,
PrefixSymbol = "$ ", // Note the trailing space
});
接尾辞記号

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Currency,
new CurrencyDataFormatter.CurrencyFormatArgs
{
CultureEnglishName = "en-US",
DecimalPlaces = 2,
UseSeparator = true,
PostfixSymbol = " USD",
});
テキスト書式
Text を使用して値をリテラル文字列として保持し、書式設定を行いません。

sheet.SetRangeDataFormat(RangePosition.EntireRange, CellDataFormatFlag.Text, null);
セルデータ書式プロパティ
個々のセルの書式にアクセスします。
var cell = sheet.Cells["A1"];
// Get the current format
CellDataFormatFlag format = cell.DataFormat;
object formatArgs = cell.DataFormatArgs;
// Set the format
cell.SetDataFormat(CellDataFormatFlag.Number,
new NumberDataFormatter.NumberFormatArgs { DecimalPlaces = 3 });
| プロパティ | 型 | 説明 |
|---|---|---|
DataFormat | CellDataFormatFlag | セルのデータ書式タイプ |
DataFormatArgs | object | 書式固有の引数 |
CustomDataFormatter | IDataFormatter | カスタムデータフォーマッター実装 |
カスタムデータフォーマッター
IDataFormatter を実装してカスタムフォーマッターを作成します。
public interface IDataFormatter
{
string FormatCell(Cell cell);
bool PerformTestFormat();
}
| メソッド | 説明 |
|---|---|
FormatCell(Cell cell) | セルのデータを書式設定します。成功時は空でない文字列を返し、スキップする場合は null を返します。 |
PerformTestFormat() | 書式設定前にデータ型をチェックする場合は true を返し、チェックをスキップする場合は false を返します。 |
CellDataFormatFlag.Custom で適用します。
sheet.SetRangeDataFormat("A1", CellDataFormatFlag.Custom, myFormatterArgs);
// Or set on a cell directly
cell.CustomDataFormatter = new MyCustomFormatter();
詳細な例についてはカスタムデータ書式を参照してください。