조건부 서식

조건부 서식을 사용하면 특정 조건에 따라 셀 서식을 자동으로 변경하여 중요한 데이터나 추세를 강조할 수 있습니다. 다양한 조건과 서식 옵션을 지원하므로 데이터를 더 직관적으로 이해하는 데 도움이 됩니다.

플러그인 모드

설치

Shell
pnpm add @univerjs/sheets-conditional-formatting @univerjs/sheets-conditional-formatting-ui

사용법

TypeScript
import { LocaleType, mergeLocales, Univer } from '@univerjs/core'import { UniverSheetsConditionalFormattingPlugin } from '@univerjs/sheets-conditional-formatting'import { UniverSheetsConditionalFormattingUIPlugin } from '@univerjs/sheets-conditional-formatting-ui'import SheetsConditionalFormattingUIEnUS from '@univerjs/sheets-conditional-formatting-ui/locale/en-US'import '@univerjs/sheets-conditional-formatting-ui/lib/index.css'import '@univerjs/sheets-conditional-formatting/facade'const univer = new Univer({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      SheetsConditionalFormattingUIEnUS,     ),  },})univer.registerPlugin(UniverSheetsConditionalFormattingPlugin)univer.registerPlugin(UniverSheetsConditionalFormattingUIPlugin)

모바일 지원

먼저 모바일 에디터를 구성하세요. 이 페이지의 플러그인 모드 초기화 코드에서 아래 데스크톱 등록을 같은 패키지의 모바일 버전으로 바꾸고 문서를 열기 전에 완료하세요. 모델 플러그인, 스타일, 언어 파일과 Facade 가져오기는 유지하며 두 버전을 동시에 등록하지 마세요.

패키지데스크톱 등록모바일 등록
@univerjs/sheets-conditional-formatting-uiUniverSheetsConditionalFormattingUIPluginUniverSheetsConditionalFormattingMobileUIPlugin

프리셋 모드

설치

Shell
pnpm add @univerjs/preset-sheets-conditional-formatting

사용법

TypeScript
import { UniverSheetsConditionalFormattingPreset } from '@univerjs/preset-sheets-conditional-formatting'import UniverPresetSheetsConditionalFormattingEnUS from '@univerjs/preset-sheets-conditional-formatting/locales/en-US'import { UniverSheetsCorePreset } from '@univerjs/preset-sheets-core'import UniverPresetSheetsCoreEnUS from '@univerjs/preset-sheets-core/locales/en-US'import { createUniver, LocaleType, mergeLocales } from '@univerjs/presets'import '@univerjs/preset-sheets-core/lib/index.css'import '@univerjs/preset-sheets-conditional-formatting/lib/index.css'const { univerAPI } = createUniver({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      UniverPresetSheetsCoreEnUS,      UniverPresetSheetsConditionalFormattingEnUS,     ),  },  presets: [    UniverSheetsCorePreset(),    UniverSheetsConditionalFormattingPreset(),   ],})

Facade API

전체 Facade API 타입 정의는 FacadeAPI에서 확인할 수 있습니다.

가져오기

플러그인 모드 참고 사항

플러그인 모드에서만 Facade 패키지를 직접 가져와야 합니다. 프리셋 모드에는 해당 Facade 패키지가 이미 포함되어 있으므로 추가로 가져올 필요가 없습니다.

TypeScript
import '@univerjs/sheets-conditional-formatting/facade'

조건부 서식 규칙 만들기

FWorksheet.newConditionalFormattingRule()은 조건부 서식 빌더를 만들고 FConditionalFormattingBuilder 인스턴스를 반환합니다. 메서드를 체이닝하여 조건부 서식 규칙을 생성할 수 있습니다.

다음은 FConditionalFormattingBuilder의 일부 멤버 메서드입니다.

메서드설명
build조건부 서식 규칙을 빌드합니다
copy현재 빌더를 완전 복제합니다
createCfId조건부 서식 ID를 만듭니다
getRanges현재 조건부 서식의 적용 범위를 가져옵니다
setRanges조건부 서식 규칙의 범위를 설정합니다
setAverage평균값 조건부 서식 규칙을 설정합니다
setUniqueValues고유 값 조건부 서식 규칙을 설정합니다
setDuplicateValues중복 값 조건부 서식 규칙을 설정합니다
setRank순위 조건부 서식 규칙을 설정합니다
setIconSet아이콘 집합 조건부 서식 규칙을 설정합니다
setColorScale색조 조건부 서식 규칙을 설정합니다
setDataBar데이터 막대 조건부 서식 규칙을 설정합니다
setBackground조건부 서식의 배경색을 설정합니다
setBold조건부 서식의 글꼴을 굵게 표시할지 설정합니다
setFontColor조건부 서식의 글꼴 색상을 설정합니다
setItalic조건부 서식의 글꼴을 기울임꼴로 표시할지 설정합니다
setStrikethrough조건부 서식의 글꼴에 취소선을 표시할지 설정합니다
setUnderline조건부 서식의 글꼴에 밑줄을 표시할지 설정합니다
whenCellEmpty셀이 비어 있을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenCellNotEmpty셀이 비어 있지 않을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenDate날짜가 특정 기간 내에 있을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenFormulaSatisfied수식 계산 결과가 참일 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberBetween숫자가 지정된 두 값 사이에 있거나 두 값 중 하나와 같을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberEqualTo숫자가 지정된 값과 같을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberGreaterThan숫자가 지정된 값보다 클 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberGreaterThanOrEqualTo숫자가 지정된 값보다 크거나 같을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberLessThan숫자가 지정된 값보다 작을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberLessThanOrEqualTo숫자가 지정된 값보다 작거나 같을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberNotBetween숫자가 지정된 두 값 사이에 없고 두 값과도 같지 않을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenNumberNotEqualTo숫자가 지정된 값과 같지 않을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenTextContains텍스트에 지정된 값이 포함되어 있을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenTextDoesNotContain텍스트에 지정된 값이 포함되어 있지 않을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenTextEndsWith텍스트가 지정된 값으로 끝날 때 조건부 서식 규칙이 적용되도록 설정합니다
whenTextEqualTo텍스트가 지정된 값과 같을 때 조건부 서식 규칙이 적용되도록 설정합니다
whenTextStartsWith텍스트가 지정된 값으로 시작할 때 조건부 서식 규칙이 적용되도록 설정합니다
TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Create a conditional formatting rule that sets the cell format to italic, red background, and green font color when the cell is not empty.const fRange = fWorksheet.getRange('A1:T100')const rule = fWorksheet.newConditionalFormattingRule()  .whenCellNotEmpty()  .setRanges([fRange.getRange()])  .setItalic(true)  .setBackground('red')  .setFontColor('green')  .build()fWorksheet.addConditionalFormattingRule(rule)

조건부 서식 규칙 가져오기

  • FWorksheet.getConditionalFormattingRules()는 워크시트의 모든 조건부 서식 규칙을 가져옵니다
  • FRange.getConditionalFormattingRules()는 범위의 모든 조건부 서식 규칙을 가져옵니다
TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()// Get all conditional formatting rules of the active worksheetconst fWorksheet = fWorkbook.getActiveSheet()const rulesOfSheet = fWorksheet.getConditionalFormattingRules()// Get all conditional formatting rules of the range A1:T100const fRange = fWorksheet.getRange('A1:T100')const rulesOfRange = fRange.getConditionalFormattingRules()

조건부 서식 규칙 제거하기

FWorksheet.deleteConditionalFormattingRule(cfId)는 워크시트에서 조건부 서식 규칙을 제거합니다. 여기서 cfId는 조건부 서식 규칙의 ID입니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const rules = fWorksheet.getConditionalFormattingRules()// Remove the first conditional formatting rulefWorksheet.deleteConditionalFormattingRule(rules[0]?.cfId)

조건부 서식 규칙 업데이트하기

FWorksheet.setConditionalFormattingRule(cfId, rule)은 워크시트의 조건부 서식 규칙을 업데이트합니다. 여기서 cfId는 조건부 서식 규칙의 ID이고 rule은 새로운 조건부 서식 규칙입니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Create a conditional formatting rule that sets the cell format to italic, red background, and green font color when the cell is not empty.const fRange = fWorksheet.getRange('A1:T100')const rule = fWorksheet.newConditionalFormattingRule()  .whenCellNotEmpty()  .setRanges([fRange.getRange()])  .setItalic(true)  .setBackground('red')  .setFontColor('green')  .build()fWorksheet.addConditionalFormattingRule(rule)// Modify the first rule to apply to a new rangeconst rules = fWorksheet.getConditionalFormattingRules()const newRuleRange = fWorksheet.getRange('A1:D10')fWorksheet.setConditionalFormattingRule(rules[0]?.cfId, { ...rules[0], ranges: [newRuleRange.getRange()] })

조건부 서식 규칙의 우선순위 변경하기

FWorksheet.moveConditionalFormattingRule(cfId, toCfId, type)은 워크시트에서 조건부 서식 규칙의 우선순위를 변경합니다. 여기서 cfId는 조건부 서식 규칙의 ID, toCfId는 대상 조건부 서식 규칙의 ID, type은 이동 유형(예: 'before', 'after')을 지정합니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const rules = fWorksheet.getConditionalFormattingRules()// Move the third rule before the first ruleconst rule = rules[2]const targetRule = rules[0]fWorksheet.moveConditionalFormattingRule(rule?.cfId, targetRule?.cfId, 'before')

모든 조건부 서식 규칙 지우기

  • FWorksheet.clearConditionalFormatRules()는 워크시트의 모든 조건부 서식 규칙을 지웁니다.
  • FRange.clearConditionalFormatRules()는 범위의 모든 조건부 서식 규칙을 지웁니다.
TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()// Clear all conditional formatting rules of the active worksheetconst fWorksheet = fWorkbook.getActiveSheet()fWorksheet.clearConditionalFormatRules()// Clear all conditional formatting rules of the range A1:T100const fRange = fWorksheet.getRange('A1:T100')fRange.clearConditionalFormatRules()

규칙 설명과 미리보기 재사용

사용자 지정 규칙 목록에는 @univerjs/sheets-conditional-formatting-ui의 getRuleDescribe와 ConditionalFormattingRulePreview를 사용할 수 있습니다. getRuleDescribe(rule, localeService)에는 전체 규칙을, 미리보기에는 설정인 rule.rule만 전달하세요. 미리보기는 설정된 모양을 표시하며 시트 셀을 계산하지 않습니다. Univer의 React 컨텍스트 안에서 렌더링하세요.

CF_PANEL_KEY는 기본 패널의 컴포넌트 재정의 키입니다. IConditionFormattingPanelProps.onEditorExit는 제출, 취소 또는 시트 활성화/제거로 편집이 끝날 때 호출됩니다. 저장 성공이나 사이드바 닫힘을 뜻하지 않습니다.

TSX
import type { IConditionFormattingRule } from '@univerjs/sheets-conditional-formatting'import { LocaleService } from '@univerjs/core'import { ConditionalFormattingRulePreview, getRuleDescribe } from '@univerjs/sheets-conditional-formatting-ui'import { useDependency } from '@univerjs/ui'interface IRuleSummaryProps {  rule: IConditionFormattingRule}function RuleSummary({ rule }: IRuleSummaryProps) {  const localeService = useDependency(LocaleService)  return (    <div>      <span>{getRuleDescribe(rule, localeService)}</span>      <ConditionalFormattingRulePreview rule={rule.rule} />    </div>  )}

이 가이드는 어떠셨나요?

© 2026 DreamNum Co., Ltd.