# dotNet.ReoGrid 扩展库 - ReoGridEditor 文档翻译

## ReoGridEditor 简介

ReoGridEditor 是一个开源项目，提供类似 Microsoft Excel 的用户界面用于创建或编辑电子表格。ReoGridEditor 使用 ReoGrid 电子表格组件的扩展版本。

## 概述

以下是 ReoGridEditor 主窗口的外观：
![383](../images/383-500x331.png)

## 获取二进制文件和源代码

### 二进制可执行文件

1. 下载发布包，解压名为"ReoGrid-版本号-Demo-Binary"的文件夹
![384](../images/384.png)

2. 双击执行"unvell.ReoGridEditor.exe"文件，将显示 ReoGridEditor 主窗口

### 源代码

下载发布包，解压名为"ReoGrid-版本号-Demo-Editor-Source.zip"的压缩文件

### 构建步骤

要构建 ReoGridEditor，请执行以下步骤：

1. 使用 Visual Studio 2012/2013/2015 或更高版本打开解决方案文件"Editor2013.sln"
2. 从引用列表中移除标记为警告的引用项
![386](../images/386.png)
3. 从下载的[发布包](https://reogrid.net/download/.md)中解压"ReoGrid-版本号-Demo-Binary"文件夹
4. 添加以下 DLL 作为项目引用：
   - unvell.ReoGrid.dll
   - unvell.ReoScript.dll
   - unvell.ReoScript.EditorLib.dll
5. 构建项目

## 编辑电子表格

### 打开和保存电子表格

使用菜单中的"打开"和"保存"功能来操作文件
![387](../images/387.png)

### 支持的文件格式

ReoGridEditor 使用 ReoGrid 来打开和保存文件。支持以下格式：

| 格式 | 加载 | 保存 | 导入 | 导出 |
|------|------|------|------|------|
| Excel 2007 (Open Office XML) | 是 | 是 |   |   |
| RGF (ReoGrid 格式) | 是 | 是 | 是 | 是 |
| CSV |   |   | 是 | 是 |
| HTML |   |   |   | 是 |

表格定义：
- **加载**：从文件中读取整个工作簿和所有工作表
- **保存**：将整个工作簿和所有工作表写入文件
- **导入**：将指定工作表读入当前工作簿
- **导出**：从当前工作簿写出指定工作表

## 管理命名范围

ReoGrid Editor 还提供了命名范围管理窗口，便于查看和修改现有的命名范围：

访问命名范围窗口：要打开命名范围管理窗口，通过 ReoGrid Editor 菜单选择"公式"→"命名范围"。这将显示一个窗口，列出当前工作表中所有已定义的命名范围。

编辑和删除：在命名范围管理窗口中，用户可以编辑与命名范围关联的单元格范围，或删除不再需要的命名范围。这个集中管理工具确保命名范围保持相关性并准确反映工作表数据。

命名范围是 ReoGrid Editor 中的一个强大功能，允许创建更易读的公式和更简单的数据引用。通过使用地址栏定义命名范围和使用命名范围管理窗口进行持续维护，用户可以显著增强数据组织和公式创建工作流程。

## 开源 .NET UI 控件

ReoGridEditor 在开源许可下提供了许多用户控件，如字体选择框、颜色选择器、边框编辑器、旋转角度编辑器等。这些 UI 控件可以免费用于其他应用程序。

## aardio 实现代码

```aardio
// 导入 ReoGrid 控件库
import dotNet.ReoGrid;

// 创建窗体
import win.ui;
var winform = win.form(text="ReoGrid 电子表格编辑器";right=800;bottom=600)

// 创建 ReoGrid 控件
var grid = ReoGrid.ReoGridControl(winform);

// 获取当前工作表
var sheet1 = grid.CurrentWorksheet;

// 设置单元格数据 - 使用 A1 表示法
sheet1["A1"] = "产品名称";
sheet1["B1"] = "单价";
sheet1["C1"] = "数量";

// 批量填充数据
sheet1["A2:C4"] = [
    ["产品A", 100, 5],
    ["产品B", 200, 3],
    ["产品C", 150, 2]
];

// 设置单元格样式
var headerStyle = sheet1.Ranges["A1:C1"].Style;
headerStyle.BackColor = ReoGrid.Graphics.SolidColor.SteelBlue;
headerStyle.TextColor = ReoGrid.Graphics.SolidColor.White;

// 添加公式计算总价
sheet1["D1"] = "总价";
for(i=2;4;1){
    sheet1["D"+i] = "=B"+i+"*C"+i;
}

// 添加命名范围
grid.Workbook.DefineNamedRange("Products", sheet1.Name, "A2:A4");
grid.Workbook.DefineNamedRange("Prices", sheet1.Name, "B2:B4");

// 保存文件功能
winform.add(
    menu={cls="menu";
        items={
            {text="文件";items={
                {text="打开";oncommand=function(){
                    var path = fsys.dlg.open("Excel文件|*.xlsx;*.xls|ReoGrid文件|*.rgf|所有文件|*.*");
                    if(path) grid.Load(path);
                }};
                {text="保存";oncommand=function(){
                    var path = fsys.dlg.save("Excel文件|*.xlsx|ReoGrid文件|*.rgf");
                    if(path) grid.Save(path);
                }};
            }}
        }
    }
);

// 显示窗体
winform.show();
win.loopMessage();
```

### 代码说明

1. 首先导入 `dotNet.ReoGrid` 库，这是使用 ReoGrid 控件的基础
2. 创建窗体后，使用 `ReoGridControl` 创建表格控件并嵌入到窗体中
3. 通过 `CurrentWorksheet` 获取当前活动的工作表对象
4. 支持多种单元格赋值方式：
   - 直接使用 A1 表示法：`sheet1["A1"] = "值"`
   - 批量填充二维数组数据
5. 样式设置通过 `Range.Style` 属性实现
6. 公式计算直接在单元格中写入以"="开头的公式字符串
7. 命名范围管理通过 `Workbook.DefineNamedRange` 方法实现
8. 文件操作菜单实现了打开和保存功能，支持多种文件格式

这个示例展示了如何在 aardio 中实现一个基本的电子表格编辑器，包含了 ReoGridEditor 的主要功能。