データ書式

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;

52 (2)

CellDataFormatFlag列挙型

説明引数の型
General自動書式(テキストと数値)なし
Number数値書式NumberDataFormatter.NumberFormatArgs
DateTime日付と時刻の書式DateTimeDataFormatter.DateTimeFormatArgs
Percentパーセント書式NumberDataFormatter.NumberFormatArgs
Currency通貨書式CurrencyDataFormatter.CurrencyFormatArgs
Textプレーンテキスト(書式なし)なし
Customカスタムデータフォーマッター任意のオブジェクト

数値書式

数値書式は桁区切り、小数点以下の桁数、負の数値スタイルをサポートします。

322

sheet.SetRangeDataFormat("A1:E7", CellDataFormatFlag.Number,
    new NumberDataFormatter.NumberFormatArgs
    {
        DecimalPlaces = 4,
        UseSeparator = true,
    });

NumberFormatArgsのプロパティ

プロパティデフォルト説明
DecimalPlacesshort2表示する小数点以下の桁数
UseSeparatorboolfalse桁区切りを表示
NegativeStyleNumberNegativeStyleMinus負の数値の表示方法
CustomNegativePrefixstringnull負の数値のカスタム接頭辞(CustomSymbol スタイルで使用)
CustomNegativePostfixstringnull負の数値のカスタム接尾辞(CustomSymbol スタイルで使用)

NumberNegativeStyle列挙型(フラグ)

スタイル説明
Minus(デフォルト)0x1-123,456.789通常のマイナス記号
Red0x2123,456.789赤テキスト、マイナスなし
Brackets0x4(123,456.789)括弧で囲む
RedMinus0x3-123,456.789赤テキストとマイナス
BracketsMinus0x5(-123,456.789)括弧とマイナス
RedBrackets0x6(123,456.789)赤テキストと括弧
RedBracketsMinus0x7(-123,456.789)赤、括弧、マイナス
Prefix_Sankaku0x8▲ 123,456.789日本式三角接頭辞
CustomSymbol0xf0CustomNegativePrefix / CustomNegativePostfix を使用

これはフラグ列挙型です。値は | で組み合わせることができます。

NegativeStyle = NumberDataFormatter.NumberNegativeStyle.Brackets | NumberDataFormatter.NumberNegativeStyle.Red

負の数値の例

323

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Number,
    new NumberDataFormatter.NumberFormatArgs
    {
        DecimalPlaces = 3,
        NegativeStyle = NumberDataFormatter.NumberNegativeStyle.RedBrackets,
        UseSeparator = true,
    });

sheet["B2"] = -12345.67;

日付時刻書式

カルチャと書式パターンを標準の.NET日付時刻パターンで指定します。

48 (2)

sheet.SetRangeDataFormat(RangePosition.EntireRange, CellDataFormatFlag.DateTime,
    new DateTimeDataFormatter.DateTimeFormatArgs
    {
        CultureName = "en-US",
        Format = "yyyy/MM/dd",
    });

DateTimeFormatArgsのプロパティ

プロパティデフォルト説明
Formatstringnull.NET日付時刻書式パターン(例: "yyyy/MM/dd""MM/dd/yyyy HH:mm"
CultureNamestringnullローカリゼーション用のカルチャ名(例: "en-US""ja-JP"

注意: DateTimeFormatArgs はクラスではなく struct です。

パーセント書式

値はパーセントとして表示されます。設定には NumberFormatArgs を使用します。

49 (2)

sheet.SetRangeDataFormat(RangePosition.EntireRange, CellDataFormatFlag.Percent,
    new NumberDataFormatter.NumberFormatArgs
    {
        DecimalPlaces = 2,
    });

セル値 0.550.00% と表示されます。

通貨書式

通貨は数値書式を拡張し、値の前または後に通貨記号を配置します。

325

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Currency,
    new CurrencyDataFormatter.CurrencyFormatArgs
    {
        CultureEnglishName = "en-US",
        DecimalPlaces = 2,
        UseSeparator = true,
        PrefixSymbol = "$",
    });

sheet["B2"] = 1234;

CurrencyFormatArgsのプロパティ

CurrencyFormatArgsNumberFormatArgs を継承し、通貨固有のプロパティを追加します。

プロパティデフォルト説明
PrefixSymbolstringnull数値の前に配置する記号(例: "$""$ "
PostfixSymbolstringnull数値の後に配置する記号(例: " USD"" 円"
CultureEnglishNamestringnullカルチャ名(例: "en-US"
DecimalPlacesshort2小数点以下の桁数(継承)
UseSeparatorboolfalse桁区切りを表示(継承)
NegativeStyleNumberNegativeStyleMinus負の数値の表示スタイル(継承)

スペース付き接頭辞

324

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

接尾辞記号

326

sheet.SetRangeDataFormat("B2", CellDataFormatFlag.Currency,
    new CurrencyDataFormatter.CurrencyFormatArgs
    {
        CultureEnglishName = "en-US",
        DecimalPlaces = 2,
        UseSeparator = true,
        PostfixSymbol = " USD",
    });

テキスト書式

Text を使用して値をリテラル文字列として保持し、書式設定を行いません。

51 (2)

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 });
プロパティ説明
DataFormatCellDataFormatFlagセルのデータ書式タイプ
DataFormatArgsobject書式固有の引数
CustomDataFormatterIDataFormatterカスタムデータフォーマッター実装

カスタムデータフォーマッター

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();

詳細な例についてはカスタムデータ書式を参照してください。

関連トピック


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