주석

주석 기능을 사용하면 스프레드시트 셀에 설명을 추가해 부가 정보를 기록하거나 맥락을 제공할 수 있습니다. 다양한 주석 스타일과 작업을 지원하므로 사용자가 데이터를 더 잘 이해하고 함께 작업하는 데 도움이 됩니다.

플러그인 모드

설치

Shell
pnpm add @univerjs/sheets-note @univerjs/sheets-note-ui

사용법

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

프리셋 모드

설치

Shell
pnpm add @univerjs/preset-sheets-note

사용법

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

Facade API

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

가져오기

Plugin mode note

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

TypeScript
import '@univerjs/sheets-note/facade'

주석 가져오기

FWorksheet.getNotes를 사용하면 워크시트의 모든 주석을 가져올 수 있습니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const notes = fWorksheet.getNotes()notes.forEach((item) => {  const { row, col, note } = item  console.log(`Cell ${fWorksheet.getRange(row, col).getA1Notation()} has note: ${note}`)})

FRange.getNote를 사용하면 범위의 왼쪽 위 셀에 있는 주석을 가져올 수 있습니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const fRange = fWorksheet.getRange('A1:D10')const note = fRange.getNote()

주석 추가 또는 업데이트

FRange.createOrUpdateNote를 사용하면 범위의 왼쪽 위 셀에 주석을 만들거나 기존 주석을 업데이트할 수 있습니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const fRange = fWorksheet.getRange('A1')fRange.createOrUpdateNote({  note: 'This is an annotation',  width: 160,  height: 100,  show: true,})

주석 삭제

FRange.deleteNote를 사용하면 범위의 왼쪽 위 셀에 있는 주석을 삭제할 수 있습니다.

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const notes = fWorksheet.getNotes()if (notes.length > 0) {  // Remove the first annotation in the worksheet  const { row, col } = notes[0]  fWorksheet.getRange(row, col).deleteNote()}// Remove the annotation in cell C1const fRange = fWorksheet.getRange('C1')fRange.deleteNote()

이벤트 리스너

전체 이벤트 타입 정의는 이벤트에서 확인할 수 있습니다.

이벤트 이름설명
SheetNoteAdd주석을 추가한 후 트리거됩니다
SheetNoteDelete주석을 삭제한 후 트리거됩니다
SheetNoteUpdate주석을 업데이트한 후 트리거됩니다
SheetNoteShow주석이 표시될 때 트리거됩니다
SheetNoteHide주석이 숨겨질 때 트리거됩니다
BeforeSheetNoteAdd주석을 추가하기 전에 트리거됩니다
BeforeSheetNoteDelete주석을 삭제하기 전에 트리거됩니다
BeforeSheetNoteUpdate주석을 업데이트하기 전에 트리거됩니다
BeforeSheetNoteShow주석을 표시하기 전에 트리거됩니다
BeforeSheetNoteHide주석을 숨기기 전에 트리거됩니다
이벤트 리스너 예시
TypeScript
// Triggered after adding an annotationconst disposable = univerAPI.addEvent(univerAPI.Event.SheetNoteAdd, (params) => {  const { workbook, worksheet, row, col, note } = params})// Remove event listener using `disposable.dispose()`
TypeScript
// Triggered before removing an annotation, can be canceledconst disposable = univerAPI.addEvent(univerAPI.Event.BeforeSheetNoteDelete, (params) => {  const { workbook, worksheet, row, col, oldNote } = params  // Cancel the annotation deletion operation  params.cancel = true})// Remove event listener using `disposable.dispose()`

이 가이드는 어떠셨나요?

© 2026 DreamNum Co., Ltd.