aardio 文档

dotNet.ReoGrid 扩展库 - 自定义数据格式化器

可以通过自定义单元格数据格式化器来格式化单元格数据。单元格数据格式化器需实现以下接口:

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;

247

说明:

  1. 在 aardio 中实现 .NET 接口时,不需要显式声明实现接口,只需实现对应的方法即可
  2. GetData 方法需要指定类型参数,这里使用 System.Double 获取双精度浮点数
  3. aardio 中的字符串格式化使用 string.format 函数,语法与 C# 类似但有些差异
  4. 在 aardio 中调用 .NET 静态属性时,需要通过完整的命名空间路径访问

Markdown 格式