创建内存工作簿是一种高效的选择,特别适用于需要从Excel文件加载数据、编辑工作表内容,然后另存为新Excel文件的场景。与传统创建屏幕控件的方式不同,内存工作簿无需屏幕控件实例,也不包含视口控制器、鼠标键盘控制器等界面模块。这使得它比基于屏幕控件的实现方式更加轻量高效。
图示:从浏览器上传Excel或CSV文件并将数据处理到数据库中
图示:从ASP.NET表单页面下载生成的Excel或CSV文件
在aardio中初始化内存工作簿的语法如下:
import dotNet.ReoGrid;
var workbook = ReoGrid.ReoGridControl.CreateMemoryWorkbook();
将工作簿保存为Excel文件到下载流:
// 参数1指定输出流,参数2指定文件格式(Excel2007对应数值30)
workbook.Save(stream, 30);
加载Excel文件到内存工作簿:
// 参数1指定文件路径,参数2可选指定格式(0表示自动检测)
workbook.Load("C:\MyTemplate.xlsx");
加载/保存Excel文件的API,以及访问工作表中数据和样式的所有方法,都与屏幕组件保持完全一致。
CreateWorksheet, AddWorksheetInsertWorksheet, RemoveWorksheetCopyWorksheet, MoveWorksheetGetWorksheetByName, GetWorksheetIndex由于内存工作簿的特性,以下API不被支持:
CurrentWorksheet属性
内存工作簿没有工作表标签页,因此不存在"当前激活工作表"的概念,应通过工作簿对象的Worksheets集合属性访问工作表。
滚动相关方法和事件
内存工作簿不包含滚动条组件。
外观样式
内存工作簿不提供任何外观样式设置。
UI相关方法
如FitWidthToCells和FitHeightToCells等需要图形信息的方法不可用,因为内存工作簿没有图形对象。
操作相关方法
如DoAction, Undo, Redo, RepeatLastAction等方法不可用。所有对内存工作簿的操作都是即时执行的且不可撤销。
在Web应用中,ReoGrid内存工作簿非常适合处理从网页客户端上传的电子表格数据,或生成供下载的Excel文件。

在ASP.NET应用中,可以在页面类中实现以下代码来生成Excel文件并提示用户下载:
// 创建内存工作簿实例
var grid = ReoGrid.ReoGridControl.CreateMemoryWorkbook();
// 获取默认的第一个工作表(新工作簿包含一个空白工作表)
var sheet1 = grid.Worksheets[0];
// 在A1单元格填入文本
sheet1["A1"] = "Hello World";
// 在A2到E2区域填入数据和公式
sheet1["A2:D2"] = [
[10, 20, "=A2+B2", "=SUM(A2:C2)"]
];
// 准备文件下载响应(此处为伪代码,实际web开发需结合具体框架)
/*
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", "attachment; filename=SampleData.xlsx");
*/
// 以Excel 2007格式保存工作簿到输出流
grid.Save(io.open("SampleData.xlsx","w+b"), 30/*Excel2007*/);
/*
Response.Flush();
Response.End();
*/
aardio使用说明:
- 实际web开发中需要根据具体web框架处理响应流
FileFormat.Excel2007在aardio中对应数值30,直接使用数值更高效- 公式语法与Excel完全一致,可直接使用
- 多维数组赋值时注意aardio数组起始索引为1,但ReoGrid接口保持.NET习惯使用0起始索引