# dotNet.ReoGrid 扩展库 - 数据序列填充

通过拖拽选区自动填充数据序列：

填充前：  
![297](../images/297.png)

填充后：  
![298](../images/298.png)

示例代码：

```aardio
// 获取当前工作表
var sheet1 = grid.CurrentWorksheet;

// 设置初始数据
sheet1["B2"] = 1;
sheet1["B3"] = 2;

// 通过拖拽选区自动填充序列（模拟用户操作）
// 实际应用中通常由用户直接拖拽完成
```

## 公式重用

如果原始区域包含公式，这些公式会被重用，并且公式中的所有相对单元格引用都会自动更新。例如：

单元格 `C2` 包含公式 `=B2*2`，填充序列后，所有新单元格将包含公式 `=B3*2`、`=B4*2`、`=B5*2` 等。

填充前：  
![299](../images/299.png)

填充后：  
![301](../images/301.png)

示例代码：

```aardio
// 设置带公式的单元格
sheet1["C2"] = "=B2*2";

// 通过拖拽填充公式（模拟用户操作）
// 实际应用中通常由用户直接拖拽完成
```

### 阻止公式重用

要阻止公式重用过程中单元格或区域引用的更新，可以使用绝对单元格或区域引用，如 `=$B$2` 或 `=B$2`。

示例1：  
![302](../images/302.png)

示例2：  
![303](../images/303.png)

## 填充方向

可以沿水平和垂直两个方向进行填充。

水平填充：  
![306](../images/306.png)

垂直填充：  
![307](../images/307.png)

## 多单元格填充

当区域包含多行或多列时，每行每列将按照各自的规则进行填充。

填充前：  
![304](../images/304.png)

填充后：  
![305](../images/305.png)

示例代码：

```aardio
// 设置多行初始数据
sheet1["B2:D3"] = [[1, 2, 3], [10, 20, 30]];

// 通过拖拽填充多行数据（模拟用户操作）
// 实际应用中通常由用户直接拖拽完成
```

## 通过编程填充序列

使用工作表的 `AutoFillSerial` 方法填充指定区域。要填充数据序列，必须指定一个参考模板区域。例如：

```aardio
// 通过编程方式填充序列
sheet1.AutoFillSerial("B2:D3", "B4:D8");
```

上述代码根据 `B2:D3` 的规则填充 `B4:D8` 区域。

示例代码：

```aardio
// 设置模板数据
sheet1["B2:D3"] = [[1, 2, 3], [10, 20, 30]];

// 通过编程方式填充序列
sheet1.AutoFillSerial("B2:D3", "B4:D8");

// 注意：在 aardio 中，区域引用字符串使用 Excel 风格的 A1 表示法
// 与 C# 版本完全兼容
```