要指定数据格式,请使用工作表的 SetRangeDataFormat 方法:
var sheet1 = reoGridControl.CurrentWorksheet;
sheet1.SetRangeDataFormat(range, formatFlag, argument);
参数 formatFlag 指定 ReoGrid.DataFormat.CellDataFormatFlag 枚举值。 参数 argument 为可选参数。
例如:
sheet1.SetRangeDataFormat("A1:B2", ReoGrid.DataFormat.CellDataFormatFlag.Number,
{
// 小数位数,例如 0.1234
DecimalPlaces = 4,
// 负数样式,例如 -123 显示为 (123)
NegativeStyle = NumberDataFormatter.NumberNegativeStyle.RedBrackets,
// 使用千位分隔符,例如 123,456
UseSeparator = true
}
);
或者使用 action 操作(可通过调用 Undo 方法或按 Ctrl+Z 撤销):
reoGridControl.DoAction(SetRangeDataFormatAction(range, formatFlag, [可选] dataFormatArgs = null));
测试代码:
sheet1["B2"] = 12345;
sheet1["C2"] = 12345.67890;
sheet1["B3"] = -1234;
sheet1["C3"] = -1234.56789;

| 类型 | CellDataFormatFlag | 参数 |
|---|---|---|
| 数字 | ReoGrid.DataFormat.CellDataFormatFlag.Number | ReoGrid.DataFormat.NumberDataFormatter.NumberFormatArgs |
| 日期时间 | ReoGrid.DataFormat.CellDataFormatFlag.DateTime | ReoGrid.DataFormat.DateTimeDataFormatter.DateTimeFormatArgs |
| 百分比 | ReoGrid.DataFormat.CellDataFormatFlag.Percent | ReoGrid.DataFormat.PercentDataFormatter.NumberFormatArgs |
| 货币 | ReoGrid.DataFormat.CellDataFormatFlag.Currency | ReoGrid.DataFormat.CurrencyDataFormatter.CurrencyFormatArgs |
| 文本 | ReoGrid.DataFormat.CellDataFormatFlag.Text | 无 |
| 自定义扩展 | ReoGrid.DataFormat.CellDataFormatFlag.Custom | 任意对象 |
数字格式提供通用的数字格式化功能,可指定千位分隔符、小数位数和负数样式。

示例:

设置单元格为数字格式的代码:
var numArgs = ReoGrid.DataFormat.NumberDataFormatter.NumberFormatArgs();
numArgs.DecimalPlaces = 4 // 小数位数 0.1234
numArgs.UseSeparator = true // 使用千位分隔符:123,456
sheet1.SetRangeDataFormat("A1:E7", ReoGrid.DataFormat.CellDataFormatFlag.Number, numArgs);
负数样式定义在枚举 NumberNegativeStyle 中。
ReoGrid 提供以下样式来格式化负数:
| 负数样式 | 示例 | 枚举值 |
|---|---|---|
| 无样式 | -123,456.789 | Minus |
| 红色 | 123,456.789 | Red |
| 红色减号 | -123,456.789 | Red |
| 括号 | (123,456.789) | Brackets |
| 红色括号 | (123,456.789) | Brackets |
| 红色括号减号 | (-123,456.789) | Brackets |
| 日文前缀 | ▲ 123,456,789 | Prefix_Sankaku |
| 日文前缀(ReoGrid Pro) | ▲ 123,456,789 | Prefix_Sankaku |
示例:

var sheet1 = grid.CurrentWorksheet;
var numArgs = ReoGrid.DataFormat.NumberDataFormatter.NumberFormatArgs();
numArgs.DecimalPlaces = 3;
numArgs.UseSeparator = true;
numArgs.NegativeStyle = ReoGrid.DataFormat.NumberDataFormatter.NumberNegativeStyle.RedBrackets;
sheet1.SetRangeDataFormat("B2", ReoGrid.DataFormat.CellDataFormatFlag.Number, numArgs);
sheet1["B2"] = -12345.67;

var timeArgs = ReoGrid.DataFormat.DateTimeDataFormatter.DateTimeFormatArgs();
timeArgs.CultureName = "en-US" // 区域设置
timeArgs.Format = "yyyy/MM/dd" // 格式模式
sheet1.SetRangeDataFormat(RangePosition.EntireRange, ReoGrid.DataFormat.CellDataFormatFlag.DateTime,timeArgs);

sheet1.SetRangeDataFormat(
RangePosition.EntireRange,
ReoGrid.DataFormat.CellDataFormatFlag.Percent,
ReoGrid.DataFormat.NumberDataFormatter.NoDecimalDigitsArgument
);
货币格式继承自数字格式,可以指定货币符号在数字前或后。例如:

var sheet1 = grid.CurrentWorksheet;
var currencyArgs = ReoGrid.DataFormat.CurrencyDataFormatter.CurrencyFormatArgs();
currencyArgs.CultureEnglishName = "en-US"
currencyArgs.DecimalPlaces = 2
currencyArgs.UseSeparator = true
currencyArgs.PrefixSymbol = "$"
sheet1.SetRangeDataFormat("B2", ReoGrid.DataFormat.CellDataFormatFlag.Currency,currencyArgs);
sheet1["B2"] = 1234;
可以在货币符号后添加空格,例如:

sheet1.SetRangeDataFormat("B2", ReoGrid.DataFormat.CellDataFormatFlag.Currency,formatArgs);
示例:设置后缀符号

var formatArgs = ReoGrid.DataFormat.CurrencyDataFormatter.CurrencyFormatArgs();
formatArgs.CultureEnglishName = "en-US"
formatArgs.DecimalPlaces = 2
formatArgs.UseSeparator = true
formatArgs.PostfixSymbol = " USD"
sheet1.SetRangeDataFormat("B2", ReoGrid.DataFormat.CellDataFormatFlag.Currency,formatArgs);
将数据格式设置为 Text 可以防止数据被格式化。

sheet1.SetRangeDataFormat(RangePosition.EntireRange, ReoGrid.DataFormat.CellDataFormatFlag.Text);
要添加自定义单元格数据格式化器,请参阅自定义数据格式。