参考链接: 🅰 aardio 文档 - .NET 调用指南 📄 ReoGrid 文档增强检索
本文档 适用 aardio
v40.21以上版本,dotNet.ReoGrid 扩展库v2.9以上版本。
开源免费
ReoGrid 是一个高效、强大、免费、开源的电子表格组件,支持数据格式设置、冻结窗格、大纲视图、公式计算、图表制作、脚本执行等功能。它兼容 Excel 的 *.xlsx 文件格式。
不需要安装 Excel
ReoGrid 不需要安装 Excel 就能在主流桌面系统上稳定运行,仅需要系统自带的 NET .NET 4.7.2( Win10 1809 就已经自带,这基本是目前主流 .NET 程序的最低要求,即使更老的操作系统也都已普及安装了 )。
生成体积较小的独立 EXE
使用 aardio 调用这类 .NET 组件可以生成独立 EXE 文件,不需要携带任何外部 DLL 程序集。
工具 » 扩展库 搜索并勾选 dotNet.ReoGrid 扩展库,安装 / 更新 按钮。✅ 在 aardio 中直接运行包含
import dotNet.ReoGrid语句的代码也会自动安装扩展库。
import dotNet.ReoGrid 语句会导入 dotNet.ReoGrid 以及 ReoGrid 名字空间, ReoGrid 与 dotNet.ReoGrid 都指向 .NET 里的 unvell.ReoGrid 名字空间,在代码中应当使用更简洁的 ReoGrid 名字空间。
dotNet.ReoGrid 也会导入 ReoScript 名字空间,用于支持 ReoGrid 脚本相关的功能。
要特别注意 aardio 的 import 语句与 C# 的 using 语句存在区别:
import 只会引入名字空间,但并不会污染现有名字空间。aardio 中访问 .NET 对象要写完整名字空间,示例:
//引入名字空间
import dotNet.ReoGrid;
//创建 Actcion
var action = ReoGrid.Actions.SetRowsHeightAction(1,1,100);
aardio 不能像 C# 那样用 SetRowsHeightAction 代替 ReoGrid.Actions.SetRowsHeightAction , 必须指定完整的名字空间。
但是在 aardio 里名字空间或者类都可以通过赋值语句指定更短的名称,例如:
//用局部变量指向类
var SetRowsHeightAction = ReoGrid.Actions.SetRowsHeightAction;
//直接使用类创建对象
var action = SetRowsHeightAction(1,1,100);
注意在 aardio 中构造类的实例不需要使用 new 关键字。
🅰 示例:
import win.ui;
/*DSG{{*/
var winform = win.form(text="ReoGrid 入门")
/*}}*/
//导入扩展库
import dotNet.ReoGrid;
/*
在界面线程中创建并显示控件参数 @1 必须指定宿主窗口(或者 custom 控件)。
在工作线程中只能创建不需要显示的 ReoGridControl 控件(不必指定参数)。
*/
var grid = ReoGrid.ReoGridControl(winform);
//获取当前工作表
var sheet1 = grid.CurrentWorksheet;
//存取行列值
sheet1[0, 0] = time.now();
// 设置单元格数据
sheet1["A1"] = " 欢迎使用 ReoGrid"; // A1 格式下标
sheet1[1, 0] = 123.45; //数值下标,0 为起始索引,表示 B2 单元格
sheet1.Cells["A1"].Data = "测试"; //也可以通过 Cells 集合获取单元格对象,然后通过 Data 字段赋值
//构造表示单元格位置的 CellPosition
var pos = ReoGrid.CellPosition("A10")
sheet1[pos] = "我是 A10"; //也可以这样写
// 设置区域数据,直接显示 aardio 字符串数组(一次性设置一个数组比循环设置数据快很多)
sheet1["B2:D4"] = [
["产品", "单价", "数量"],
["苹果", 5.8, 10],
["香蕉", 3.5, 20]
];
//调用函数设置列数据,参数(行索引、列索引,数据),注意 .NET 起始下标为 0
sheet1.SetCellData(5, 2, "hello world");
winform.show();
win.loopMessage();
本文档中所有示例代码都基于上面的程序,并使用相同的变量命名:
winform 表示 win.form 窗体对象grid 表示 ReoGrid.ReoGridControl 表格控件对象。sheet1 表示 grid.CurrentWorksheet创建表格时 var grid = ReoGrid.ReoGridControl(winform) 这里的 winform 参数也可以更换为其他控件窗口。如果我们只希望在窗体的一部分区域显示表格,就可以先在窗口上放一个 static 或 custom 控件,然后以该控件窗口作作为 ReoGrid.ReoGridControl 的构造参数创建表格实例。

常用对象:
常用事件:
ReoGrid 控件本身也是一个工作簿,一个控件(工作簿)可以包含多个工作表。

调用控件(工作簿)API:
// 获取表格控件实例
var grid = ReoGrid.ReoGridControl(winform);
// 调用控件方法
grid.method();
调用工作表 API :
// 获取当前活动工作表
var sheet1 = grid.CurrentWorksheet;
// 调用工作表方法
sheet1.method();
工作表提供了许多方法来管理单元格数据、样式、边框、轮廓、区域和公式计算等。以下示例演示如何通过调用工作表API来设置单元格数据。
使用工作表索引属性设置单元格数据:
// 获取当前活动工作表实例
var sheet1 = grid.CurrentWorksheet;
// 设置单元格数据
sheet1["A1"] = "hello world"; // 使用A1表示法
sheet1[2, 1] = 10; // 使用行列索引(从0开始)
或者调用SetCellData方法:
// 设置指定位置的单元格数据
sheet1.SetCellData(2, 1, "hello world"); // aardio中直接传行列索引,不需要 ReoGrid.CellPosition 对象
了解更多关于工作表的内容。
操作 (actions) 是 ReoGrid 核心提供的撤销框架,许多操作可以通过执行操作来完成。通过操作完成的操作可以通过调用控件的Undo方法撤销。使用操作执行操作的步骤:
所有 Actvion 都在 ReoGrid.Actions 名字空间下。
var SetRowsHeightAction = ReoGrid.Actions.SetRowsHeightAction;
DoAction 方法:创建 Action 并调用 grid.DoAction 执行操作:
// 创建 Action,不需要使用 new 关键字
var setRowsHeight = SetRowsHeightAction(1,1,100);
// 执行 Actvion
grid.DoAction(grid.CurrentWorksheet,setRowsHeight );
撤销或重做操作:
// 撤销操作
grid.Undo();
// 重做操作
grid.Redo();
重复执行最后一个操作,应用到另一个区域:
// 重复最后操作到新区域
grid.RepeatLastAction( ReoGrid.RangePosition(2, 3, 5, 5) );
注意 aardio 里要写为 ReoGrid.RangePosition(2, 3, 5, 5) 而不是 C# 那样写为 new RangePosition(2, 3, 5, 5),aardio 里不要省略名字空间前缀并且需要移除多余的 new 关键字。
用户应用程序可以扩展脚本函数和对象以提供自定义脚本功能,详见自定义函数。
netObject[1] 这样的单值索引的下标 aardio 会自动将索引减 1 ,但如果使用其他方式传索引时不会减 1。例如 ReoGrid 访问单元格需要指定多项索引,则行列索引从 0 开始,例如在 aardio 中同样要用 sheet1[0, 0] 访问第一个单元格。sheet1.Cells["A1"].Data = "测试"。ReoGrid.RangePosition(2, 3, 5, 5) , 而不是 RangePosition(2, 3, 5, 5),除非先将 ReoGrid.RangePosition 赋值到名称更短的变量。