# 冻结

- Human documentation: [https://docs.univer.ai/zh-CN/guides/sheets/features/core/freeze](https://docs.univer.ai/zh-CN/guides/sheets/features/core/freeze)

- Agent Markdown: [https://docs.univer.ai/zh-CN/guides/sheets/features/core/freeze.md](https://docs.univer.ai/zh-CN/guides/sheets/features/core/freeze.md)

- Requested language: `zh-CN`

- Content language: `zh-CN`

- Documentation version: `1.0.0-rc.0`

- Source: [sheets/features/core/freeze.zh-CN.mdx](https://github.com/dream-num/documentation/blob/dev/content/guides/sheets/features/core/freeze.zh-CN.mdx)

---

[`IWorksheetData.freeze`](https://docs.univer.ai/zh-CN/guides/sheets/model/workbook-data.md) 可以配置工作表的冻结状态。它的接口定义如下：

```typescript
interface IFreeze {
  /**
   * 冻结列的数量
   */
  xSplit: number
  /**
   * 冻结行的数量
   */
  ySplit: number
  /**
   * 可滚动的起始行（视图主区域的起始行）
   */
  startRow: number
  /**
   * 可滚动的起始列（视图主区域的起始列）
   */
  startColumn: number
}
```

例如，我想冻结 B 列和第 2 行，可以这样配置：

```json
{
  "xSplit": 1, // 冻结 1 列，即 B 列
  "ySplit": 1, // 冻结 1 行，即第 2 行
  "startRow": 2, // 可滚动的起始行是第 3 行
  "startColumn": 2 // 可滚动的起始列是第 C 列
}
```

## Facade API

`FWorksheet` 类提供了几种方法来管理工作表中行和列的冻结状态。这些方法允许你设置、获取和取消冻结窗格。

### 设置冻结

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()
worksheet.setFreeze({
  xSplit: 1, // 冻结 1 列，即 B 列
  ySplit: 1, // 冻结 1 行，即第 2 行
  startRow: 2, // 可滚动的起始行是第 3 行
  startColumn: 2, // 可滚动的起始列是第 C 列
})
console.log('当前冻结状态：', worksheet.getFreeze())
```

### 设置冻结列的数量

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()

// 设置 A-B 列冻结
worksheet.setFrozenColumns(2)
```

### 设置冻结行的数量

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()

// 设置前 3 行冻结
worksheet.setFrozenRows(3)
```

### 获取冻结状态

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()

const freezeState = worksheet.getFreeze()
```

### 获取冻结列的数量

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()

const frozenColumns = worksheet.getFrozenColumns()
```

### 获取冻结行的数量

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()

const frozenRows = worksheet.getFrozenRows()
```

### 取消冻结

```typescript
const worksheet = univerAPI.getActiveWorkbook().getActiveSheet()

// 取消所有冻结
worksheet.cancelFreeze()
```
