# dotNet.ReoGrid 扩展库 - 工作表 (Worksheet)

工作表视图由三个独立部分组成：

*   行标题视图 (Row Header View)
*   列标题视图 (Column Header View)
*   单元格视图 (Cells View)

![工作表视图](./images/216.png)

## 管理工作表

### 获取当前活动工作表

```aardio
var sheet1 = reoGridControl.CurrentWorksheet;
```

### 更改当前活动工作表

```aardio
reoGridControl.CurrentWorksheet = anotherWorksheet;
```

注意：不能将 `CurrentWorksheet` 设为 null，控件必须保持至少一个工作表处于激活状态。

### 通过索引获取工作表

```aardio
var sheet1 = reoGridControl.Worksheets[1]; // 索引从0开始
```

### 获取工作表索引

```aardio
var index = workbook.GetWorksheetIndex(mysheet);
```

### 通过名称获取工作表

```aardio
var sheet1 = reoGridControl.Worksheet["sheet2"];
```

### 更改工作表名称

```aardio
sheet1.Name = "newSheet";
```

注意：确保同一工作簿中的工作表名称不重复。

### 创建/插入/删除/移动/复制工作表

关于创建工作表、插入工作表、删除工作表、移动或复制工作表的操作，请参考[工作表管理](./workbook#worksheet-management-1.html)文档。

## 访问单元格数据

有三种方法可以访问单元格数据：

### 方法1：使用工作表索引属性

在A1单元格显示"hello world"：

```aardio
sheet1["A1"] = "hello world";
```

通过工作表索引属性获取单元格数据：

```aardio
var text = sheet1["A1"];
```

### 方法2：通过Cells实例设置

使用工作表的`Cells`属性获取单元格实例：

```aardio
var cell = sheet1.Cells["A1"];
cell.Data = "hello world";
```

Cells实例不仅提供`Data`属性，还包含单元格的许多其他内容，如公式、样式、边框等。详见[单元格](./cell "Cell".html)文档。

### 方法3：通过Action设置单元格数据

```aardio
var action = new SetCellDataAction("A1", "hello world");
reoGridControl.CurrentWorksheet.DoAction(action);
```

使用Action修改单元格数据可以获得撤销更改的能力（通过`Undo`方法）。

## 访问单元格实例

要与单元格实例交互，可以使用工作表的`Cells`属性：

```aardio
var cell = sheet1.Cells["A1"];
cell.Data = "hello world";
```

直接访问`Cells`属性获取单元格实例时，如果该实例不存在，ReoGrid会创建一个新实例。为了避免不必要地创建大量单元格实例（特别是在检查单元格值或公式时），建议使用特定的`GetCellXXX`方法，如`GetCellData`。这种方法可以避免创建过多单元格实例的开销。

更多信息请参考[单元格](./cell.html)文档。

### 不创建新实例获取单元格实例

使用`GetCell`方法可以在不创建新实例的情况下获取单元格实例：

```aardio
var cell = sheet1.GetCell("A1");
if (cell != null) {
    cell.Data = "hello world";
}
```

## 访问行和列标题

要访问行和列标题，使用工作表的`RowHeaders`和`ColumnHeaders`属性：

```aardio
var rowHeader = sheet1.RowHeaders[0];  // 索引：从0开始的行号
var colHeader = sheet1.ColHeaders[0];   // 索引：从0开始的列号
// 列标题也可以通过地址代码定位
var colHeader = sheet1.ColHeaders["B"];
```

详情请参阅[行和列](./worksheet/row-and-column.html)文档。

## 访问样式

可以通过指定范围来访问单元格样式：

```aardio
//创建样式。注意 dotNet.ReoGrid 扩展库需要升级到最新版，不然无参数时返回值为是 null 。
var style = ReoGrid.WorksheetRangeStyle()
style.Flag = ReoGrid.PlainStyleFlag.TextColor
style.TextColor = ReoGrid.Graphics.SolidColor.Red

//设置样式
sheet1.SetRangeStyles("A1:C3", style);
```

效果：![设置文本颜色](./images/221.png)

详情请参阅[单元格样式](./cell/style.html)文档。

### 访问边框

要更改单元格边框，使用工作表的 SetRangeBorders 方法：

```aardio
sheet1.SetRangeBorders("A1:C3", ReoGrid.BorderPositions.InsideHorizontal, ReoGrid.RangeBorderStyle({
    Style = BorderLineStyle.Dashed,
    Color = ReoGrid.Graphics.SolidColor.Red
}));
```

效果：![设置边框样式](./images/222.png)

详情请参阅[边框](./cell/border.html)文档。

## 设置打印和预览

ReoGrid提供了强大的功能来创建可打印的电子表格报表。

![打印预览](./images/224.png)

详情请参阅[分页和打印](./general/paging-and-print.html)文档。

## 更改外观和行为

### 隐藏行和列标题

要隐藏行和列标题，设置工作表设置：

```aardio
sheet1.SetSettings(WorksheetSettings.View_ShowRowHeader, false);
sheet1.SetSettings(WorksheetSettings.View_ShowColumnHeader, false);
```

效果：![隐藏标题](./images/223.png)

了解更多工作表设置，请参阅[设置](./worksheet/settings.html)文档。

### 更改焦点移动方向

默认情况下，ReoGrid在按下Enter和Tab键时水平移动焦点选择。以下代码将方向从水平改为垂直：

```aardio
sheet1.SelectionForwardDirection = ReoGrid.SelectionForwardDirection.Down;
```

### 禁用和隐藏选择

要禁用和隐藏选择，使用以下代码：

```aardio
sheet1.SelectionMode = ReoGridSelectionMode.None;
```

### 允许/禁止更改行和列大小

默认情况下，可以通过在标题分隔线上拖动鼠标来更改行高和列宽，可以通过以下代码禁用此行为：

```aardio
sheet1.SetSettings(WorksheetSettings.Edit_AllowAdjustRowHeight, false);
sheet1.SetSettings(WorksheetSettings.Edit_AllowAdjustColumnWidth, false);
```

了解更多工作表设置，请参阅[设置](./worksheet/settings.html)文档。