# dotNet.ReoGrid 扩展库 - Excel 文件格式支持 (xlsx)

## 多格式支持

ReoGrid 支持加载和保存 Excel xlsx 文件格式，导入导出 CSV 文件，将电子表格输出到打印机或屏幕预览，以及将工作表生成 HTML 或 PDF 格式。

![245](../images/245.png)

## 工作簿输入输出 API

ReoGrid 控件本身就是一个工作簿，无论是屏幕上的工作簿控件还是内存中的工作簿都具有相同的 API。

```aardio
// 获取工作簿对象
var workbook = reoGridControl.Workbook;

// 加载 Excel 工作簿
workbook.Load(path, 30/*Excel2007*/);
// ReoGrid 会自动从 Excel 文件中创建并加载所有工作表

// 保存 Excel 文件
workbook.Save(path, 30/*Excel2007*/);
```

## 支持的对象

支持从 Excel 加载或保存以下对象：

* 加载或保存整个[工作簿](../workbook.html)（所有[工作表](../sheet1.html)）
* 设置[行和列标题](../worksheet/row-and-column.html)的可见性
* 单元格样式（字体、颜色、对齐方式等）
* 单元格数据和[数据格式](../cell/data-format.html)（数字、货币、百分比等）
* 单元格[边框](../cell/border.html)
* [公式](../formula.html)（引用关系和计算链）
* [命名范围定义](../worksheet/named-range.html)
* [图像](../floating/floating-image.html)
* [浮动对象](../floating.html)
* [图表](../chart.html)

## 不支持的对象

目前不支持加载或保存以下对象：

* [分页和打印](../general/paging-and-print.html)
* [大纲](../worksheet/group-and-outline.html)
* 条件样式触发器
* 数据透视表和数据库连接
* 某些公式函数和 VBA

## 可用函数列表

参见[Excel兼容函数列表](../formula/formula-functions.html)。

## 内存工作簿

ReoGrid 还提供了一个无界面的接口，可以在没有 GUI 的情况下加载和保存电子表格。此功能通常用于在后台或服务器端导入导出 Excel 文件和处理数据。

### 内存工作簿的典型用法

创建内存工作簿实例，然后以 Excel 格式加载或保存电子表格。

```aardio
// 创建内存工作簿
var workbook = ReoGrid.ReoGridControl.CreateMemoryWorkbook();

// 从流加载 Excel 工作簿
workbook.Load(stream, 30/*Excel2007*/);

// 将流保存为 Excel 工作簿
workbook.Save(stream, 30/*Excel2007*/);
```

了解更多关于[内存工作簿](../general/memory-workbook.html)的信息。

## 代码说明

1. 在 aardio 中，我们通过 `reoGridControl.Workbook` 获取工作簿对象，而不是直接使用控件本身
2. 文件格式常量位于 `ReoGrid.IO.FileFormat` 名字空间下
3. 内存工作簿的创建方式与 C# 版本类似，但需要完整指定命名空间路径
4. 流操作在 aardio 中通常使用 `io.file` 或 `raw.buffer` 等对象实现

## 实际应用示例

```aardio
import win.ui;
import dotNet.ReoGrid;

var winform = win.form(text="ReoGrid Excel 文件操作示例"; right=800; bottom=600)
var reoGridControl = ReoGrid.ReoGridControl(winform)

// 加载 Excel 文件
reoGridControl.Load("~\test.xlsx", 30/*Excel2007*/)

// 保存修改后的文件
reoGridControl.Save("~\test_modified.xlsx", 30/*Excel2007*/)

// 内存工作簿操作
var memWorkbook = ReoGrid.ReoGridControl.CreateMemoryWorkbook()
memWorkbook.Load("~\data.xlsx", 30/*Excel2007*/)
memWorkbook.Save("~\data_backup.xlsx", 30/*Excel2007*/)

winform.show()
win.loopMessage()
```

> 注意：在实际使用时，请确保文件路径正确，并处理可能出现的异常情况。