可以通过自定义单元格数据格式化器来格式化单元格数据。单元格数据格式化器需实现以下接口:
public interface IDataFormatter
{
// 为指定单元格返回格式化后的字符串
string FormatCell(ReoGridCell cell);
// 确定是否检查所有未格式化的单元格
bool PerformTestFormat(); // 通常这里需要返回 true
}
要创建单元格数据格式化器,需要先调用 C# 编译器创建一个实现 IDataFormatter 接口类的程序集 "/MyDataFormatter.dll" :
import dotNet.ReoGrid.Compiler;
var compiler = dotNet.ReoGrid.Compiler();
//C# 源代码
compiler.Source = /***
using System;
using System.Collections.Generic;
using System.Text;
using unvell.ReoGrid.DataFormat;
using unvell.ReoGrid;
namespace aardio.ReoGrid {
class MyDataFormatter : IDataFormatter
{
public string FormatCell(Cell cell)
{
double val = cell.GetData<double>();
return val < 0 ? string.Format("V:[{0}]", (-val).ToString("###,###,##0.00")) : val.ToString("###,###,###.00");
}
public bool PerformTestFormat()
{
return true;
}
}
}
***/
//编译 C# 代码并生成程序集
compiler.CompileOrFail("/MyDataFormatter.dll");
然后加载 "/MyDataFormatter.dll",并添加这个自定义的格式化类:
//加载程序集
var dll = dotNet.loadFile("/MyDataFormatter.dll");
//在 aardio 中创建 .NET 对象
var MyDataFormatter = dll.import("aardio.ReoGrid.MyDataFormatter");
// 获取数据格式化管理器实例
var formatterManager = ReoGrid.DataFormat.DataFormatterManager.Instance;
//添加自定义格式化器
formatterManager.DataFormatters.Add(ReoGrid.DataFormat.CellDataFormatFlag.Custom,MyDataFormatter() );
使用这个格式化器:
// 设置单元格数据格式为自定义格式
cell.DataFormat = ReoGrid.DataFormat.CellDataFormatFlag.Custom;
cell.Data = 12345.6789;

GetData 方法需要指定类型参数,这里使用 System.Double 获取双精度浮点数string.format 函数,语法与 C# 类似但有些差异