# 預設樣式

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

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

- Requested language: `zh-TW`

- Content language: `zh-TW`

- Documentation version: `1.2.0`

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

---

Univer 提供了兩級預設樣式：

1. 工作表的預設樣式
2. 列或行的預設樣式

這兩者都可以透過 [`IWorksheetData`](https://docs.univer.ai/zh-TW/guides/sheets/model/worksheet-data.md) 介面或 Facade API 設定。



## 配置

預設情況下，列樣式優先於行樣式。你可以在註冊時透過設定 `isRowStylePrecedeColumnStyle` 來更改此行為。

依接入模式將以下選項合併到既有的初始化設定中，保留其他外掛、語言、主題與容器設定，請勿重複註冊同一外掛。

#### 外掛模式

```typescript
import { UniverSheetsPlugin } from '@univerjs/sheets'

univer.registerPlugin(UniverSheetsPlugin, {
  isRowStylePrecedeColumnStyle: true,
})
```

#### 預設模式

```typescript
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import { createUniver } from '@univerjs/presets'

const { univerAPI } = createUniver({
  presets: [
    UniverSheetsCorePreset({
      sheets: {
        isRowStylePrecedeColumnStyle: true,
      },
    }),
  ],
})
```

## 設定預設樣式

工作表的預設樣式可以透過兩種方式設定：

1. 透過 [`IWorksheetData`](https://docs.univer.ai/zh-TW/guides/sheets/model/worksheet-data.md) 介面

```typescript
interface IWorksheetData {
  // other
  /**
   * @property {Nullable<IStyleData>} [defaultStyle] - Default style data of Worksheet.
   */
  defaultStyle?: Nullable<IStyleData>
}

interface IRowData {
  // other
  /**
   * style data
   */
  s?: Nullable<IStyleData>
}

interface IColumnData {
  // other
  /**
   * style data
   */
  s?: Nullable<IStyleData>
}
```

2. 透過 Facade API 設定

```typescript
const fworkbook = univerAPI.getActiveWorkbook()
const fworksheet = fworkbook.getActiveSheet()
const defaultStyle = {
  bg: {
    rgb: 'red',
  },
}
const defaultColumnStyle = {
  bg: {
    rgb: 'blue',
  },
}
const defaultRowStyle = {
  bg: {
    rgb: 'green',
  },
}

// 設定預設樣式
fworksheet.setDefaultStyle(defaultStyle)
// 設定列 D 的預設樣式
fworksheet.setColumnDefaultStyle(3, defaultColumnStyle)
// 重置列 D 的預設樣式
fworksheet.setColumnDefaultStyle(3, undefined)

// 設定行預設樣式
fworksheet.setRowDefaultStyle(1, defaultRowStyle)
```

## 縮小字型以符合儲存格

當文字寬度超過儲存格時，可透過 `FRange` 縮小字型。此設定會套用至範圍中的所有儲存格；`getShrinkToFit()` 會讀取左上角儲存格的狀態。

```ts
const range = univerAPI.getActiveWorkbook().getActiveSheet().getRange('A1:C3')

range.setShrinkToFit(true)
const enabled = range.getShrinkToFit()
```

縮小字型以符合儲存格與自動換行互斥：啟用自動換行會清除縮小字型設定；啟用縮小字型會清除儲存格原有的自動換行設定。

## 儲存格文字行距

`textLineGap` 用於增加儲存格文字行與行之間的像素間距，對豐富文字和儲存格編輯器同樣生效。在初始化時設定，作用於該 Univer 執行個體中的所有活頁簿。預設值為 `0`，必須是有限的非負數。



#### 外掛模式

```ts
import { UniverSheetsPlugin } from '@univerjs/sheets'

univer.registerPlugin(UniverSheetsPlugin, { textLineGap: 6 })
```

#### 預設模式

```ts
import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'
import { createUniver } from '@univerjs/presets'

const { univerAPI } = createUniver({
  presets: [UniverSheetsCorePreset({ sheets: { textLineGap: 6 } })],
})
```

增加行距不會自動修改既有列高。需要時應重新計算自動列高；固定列高可能裁切文字。這是執行個體層級的設定，不是單一儲存格的段落樣式。
