ReoGrid 完全可以在 aardio 中使用,因为它是由 C#.NET 开发的,而 aardio 可以通过 dotNet 扩展库无缝调用 .NET 组件。
ReoGrid 支持加载和保存 Excel(.xlsx) 文件。您可以使用 Excel 制作任何电子表格模板,然后在 aardio 应用程序中通过 ReoGrid 显示它们。详见 Excel 文件格式。
aardio 示例代码:
import dotNet.ReoGrid;
var grid = ReoGrid.ReoGridControl(winform);
grid.Load("C:\mypath\template.xlsx"); // 加载 Excel 文件
参考文档:最佳实践 - 创建电子表格模板
在 aardio 窗体程序内创建 ReoGrid 控件的代码:
import win.ui;
var winform = win.form(text="ReoGrid 示例")
import dotNet.ReoGrid;
var grid = ReoGrid.ReoGridControl(winform); // 创建 ReoGrid 控件
grid.Dock = 5/*_DockStyle.Fill*/; // 填充整个窗体
// 获取默认工作表实例
var sheet1 = grid.CurrentWorksheet;
// 设置单元格值
sheet1["A1"] = "A";
winform.show();
win.loopMessage();
自文件加载 Excel 格式模板:
// 从文件加载,支持 aardio 工程的内嵌资源文件路径
grid.Load("\res\template.xlsx");
aardio 新版 dotNet.ReoGrid 扩展库 grid.Load 方法的第一个文件参数已经支持文件路径、资源文件路径、buffer 类型的内存数据。
也可以自行创建文件流并加载文件流,示例:
import System.IO;
var stream = System.IO.FileStream("\template.xlsx",
System.IO.FileMode.Open, System.IO.FileAccess.Read, System.IO.FileShare.Read);
grid.Load(stream, 30/*FileFormat.Excel2007*/);
stream.Close();
自内存文件流加载文件:
//创建内存文件流
var memoryStream = System.IO.MemoryStream();
//加载资源文件
var bytes = string.loadBuffer("/res/template.xlsx")
//调用 .NET 函数,写入二进制数据
memoryStream.Write(bytes, 0, #bytes);
//重置流的位置到开头
memoryStream.Seek(0, System.IO.SeekOrigin.Begin);
grid.Load(memoryStream, 30/*FileFormat.Excel2007*/);
memoryStream.Close();
如果 grid.Load 方法的第一个参数指定文件流对象,则第二个参数必须要指定格式。可选格式如下:
1/*FileFormat.ReoGridFormat*/10/*FileFormat.CSV*/30/*FileFormat.Excel2007*/0/*FileFormat._Auto*/100/*FileFormat._Custom*/ardio 的 dotNet.ReoGrid 扩展库已经自动支持自内存加载,只要在 grid.Load 方法的第一个文件参数直接指定 buffer 类型的内存数据就可以,也可以指定 aardio 工程里的内嵌资源文件路径( aardio 会尝试自资源路径的后缀名获取默认的 format 参数值 )。
加载文件后窗体显示效果如下:

ReoGrid 有 WorkbookSettings 和 WorksheetSettings,用于决定电子表格的许多行为和外观。工作表标签控件和滚动条是工作簿外观的一部分,可以通过以下设置隐藏:
// 隐藏工作表标签和滚动条
grid.SetSettings(
0x00000001/*WorkbookSettings.View_ShowSheetTabControl*/ |
0x00000002/*WorkbookSettings.View_ShowScrolls*/,
false
);
行标题和列标题是每个工作表的一部分,要隐藏当前选定工作表的标题,请使用以下代码:
// 隐藏行和列标题
grid.CurrentWorksheet.SetSettings(
0x00000001/*WorksheetSettings.View_ShowHeaders*/,
false
);
窗体显示效果如下:

aardio 调用 .NET 的速度虽然已经很快,但跨语言交互总是有成本的,所以要避免密集地、不必要地、大量循环访问控件,可以改为在 aardio 中循环生成数据以后,一次性读写控件。请参考: dotNet.ReoGrid 性能优化