# dotNet.ReoGrid 扩展库 - 多行表头

在 ReoGrid 中创建多行列头，可以通过工作表的 `ExtensionColumnHeader` 属性实现。这允许您垂直扩展列标题区域以容纳多行表头，最多可支持10行。这些表头行中的单元格可以水平或垂直合并，并且您可以自由自定义表头文本和样式。![多行表头](../images/pro/001.png)

## 创建多行表头

获取扩展列头引用：首先从工作表中获取扩展列头的引用。

```aardio
var extensionHeader = sheet1.ExtensionColumnHeader;
```

设置行数：定义列标题的行数。可以使用 `RowCount` 属性或 `SetRowCount` 方法实现。

```aardio
extensionHeader.SetRowCount(3); // 设置表头为3行
```

效果如下图所示。![多行表头](../images/pro/002.png)

## 访问单元格

多行表头中的单元格与工作表中的单元格类似，其原点坐标(0,0)位于左上角。![多行表头](../images/pro/003.png)

### 合并单元格

要合并多行表头中的单元格，请使用 `MergeCells` 方法。您可以设置要合并的行和列作为参数。

```aardio
extensionHeader.MergeCells(startRow, startColumn, rowSpan, columnSpan)
```

创建以下代码：

```aardio
// 合并第一个单元格 (0, 0)
extensionHeader.MergeCells(0, 0, 3, 1);
// 从第0行第2列开始合并 (0, 1)
extensionHeader.MergeCells(0, 1, 1, 4);
```

![多行表头](../images/pro/004.png)

### 设置单元格文本

```aardio
extensionHeader[0, 0].Text = "No.";
extensionHeader[0, 1].Text = "大分类";
```

![多行表头](../images/pro/005.png)

重复 `MergeCells` 和文本设置以创建多行表头：

```aardio
extensionHeader.MergeCells(0, 0, 3, 1);
extensionHeader.MergeCells(0, 1, 1, 4);
extensionHeader.MergeCells(1, 1, 1, 2);
extensionHeader.MergeCells(1, 3, 1, 2);
extensionHeader.MergeCells(0, 5, 3, 1);
extensionHeader.MergeCells(0, 6, 1, 4);
extensionHeader.MergeCells(1, 6, 2, 1);
extensionHeader.MergeCells(1, 8, 2, 2);
extensionHeader[0, 0].Text = "No.";
extensionHeader[0, 1].Text = "大分类";
extensionHeader[1, 1].Text = "中分类";
extensionHeader[1, 3].Text = "中分类";
extensionHeader[0, 6].Text = "大分类";
extensionHeader[2, 1].Text = "小分类";
extensionHeader[2, 2].Text = "小分类";
extensionHeader[2, 3].Text = "小分类";
extensionHeader[2, 4].Text = "小分类";
extensionHeader[0, 5].Text = "对象";
```

效果如下。![多行表头](../images/pro/006.png)

### 取消合并单元格

您可以使用 `UnmergeCells` 方法取消合并单元格。

```aardio
extensionHeader.UnmergeCells(0, 7);
```

## 关于列和单元格选择

无论单元格是否水平合并，多行表头始终可以选择单个列。选中的列会以高亮颜色显示。![多行表头](../images/pro/007.png)

如果选择了合并单元格的部分列，这些单元格将显示为高亮颜色。![多行表头](../images/pro/008.png)

## 关于显示/隐藏列

如果将列设置为隐藏，隐藏列的位置会出现一条粗线。![多行表头](../images/pro/009.png)

## 与工作表冻结配合使用

多行表头可以像普通列头一样与工作表冻结功能配合使用。如果工作表被滚动，部分列会被隐藏，如下图所示。![多行表头](../images/pro/012.png)

## 与大纲配合使用

多行表头可以像普通列头一样与大纲功能配合使用。如果列被折叠，表头单元格将被隐藏。![多行表头](../images/pro/013.png)