aardio 文档

dotNet.ReoGrid 扩展库 - 在 aardio 中使用

ReoGrid 完全可以在 aardio 中使用,因为它是由 C#.NET 开发的,而 aardio 可以通过 dotNet 扩展库无缝调用 .NET 组件。

使用 Excel 制作电子表格模板

ReoGrid 支持加载和保存 Excel(.xlsx) 文件。您可以使用 Excel 制作任何电子表格模板,然后在 aardio 应用程序中通过 ReoGrid 显示它们。详见 Excel 文件格式

aardio 示例代码:

import dotNet.ReoGrid;
var grid = ReoGrid.ReoGridControl(winform);
grid.Load("C:\mypath\template.xlsx"); // 加载 Excel 文件

使用 ReoGridEditor 制作电子表格模板

参考文档:最佳实践 - 创建电子表格模板

在窗体上放置 ReoGrid 控件

在 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 方法的第一个参数指定文件流对象,则第二个参数必须要指定格式。可选格式如下:

ardio 的 dotNet.ReoGrid 扩展库已经自动支持自内存加载,只要在 grid.Load 方法的第一个文件参数直接指定 buffer 类型的内存数据就可以,也可以指定 aardio 工程里的内嵌资源文件路径( aardio 会尝试自资源路径的后缀名获取默认的 format 参数值 )。

加载文件后窗体显示效果如下: 175

隐藏工作表标签控件和滚动条

ReoGrid 有 WorkbookSettings 和 WorksheetSettings,用于决定电子表格的许多行为和外观。工作表标签控件和滚动条是工作簿外观的一部分,可以通过以下设置隐藏:

// 隐藏工作表标签和滚动条
grid.SetSettings(
    0x00000001/*WorkbookSettings.View_ShowSheetTabControl*/ | 
    0x00000002/*WorkbookSettings.View_ShowScrolls*/, 
    false
);

隐藏电子表格表头

行标题和列标题是每个工作表的一部分,要隐藏当前选定工作表的标题,请使用以下代码:

// 隐藏行和列标题
grid.CurrentWorksheet.SetSettings(
    0x00000001/*WorksheetSettings.View_ShowHeaders*/, 
    false
);

窗体显示效果如下: 176

性能优化

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

Markdown 格式