# 凍結

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

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

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

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

---

[`IWorksheetData.freeze`](https://docs.univer.ai/zh-TW/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()
```
