Web SDK

Структура

Функция структуры (также известная как группировка или структура измерений) позволяет объединять строки или столбцы листа в группы. С её помощью удобно упорядочивать и обобщать большие наборы данных, создавая сворачиваемые разделы.

Введение

В Univer Sheets функция структуры позволяет:

  • Группировать строки или столбцы: создавать иерархические группы строк или столбцов для упорядочивания данных.
  • Сворачивать и разворачивать группы: показывать или скрывать сгруппированные строки и столбцы одним щелчком.
  • Создавать вложенные группы: добавлять несколько уровней группировки для сложных иерархий данных.

Группы структуры обычно используются в следующих случаях:

  • Обобщение детализированных данных: подробные строки группируются под итоговыми, чтобы сделать представление компактнее.
  • Упорядочивание больших наборов данных: связанные столбцы или строки объединяются для более удобной навигации.
  • Создание сворачиваемых отчётов: пользователи могут разворачивать и сворачивать разделы отчёта по мере необходимости.

Режим плагинов

Установка

Shell
pnpm add @univerjs-pro/sheets-outline @univerjs-pro/sheets-outline-ui

Использование

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

Если у вас есть коммерческая лицензия Univer, инструкции по настройке см. в разделе Использование лицензии в клиенте.

Поддержка мобильных устройств

Сначала настройте мобильный редактор. В коде инициализации режима плагинов на этой странице замените указанные настольные регистрации мобильными экспортами тех же пакетов до открытия документа. Сохраните модели, стили, локализации и импорты Facade; не регистрируйте оба варианта.

ПакетНастольная регистрацияМобильная регистрация
@univerjs-pro/sheets-outline-uiUniverSheetsOutlineUIPluginUniverSheetsOutlineMobileUIPlugin

Режим предустановки

Функция структуры входит в предустановку @univerjs/preset-sheets-advanced.

Установка

Shell
pnpm add @univerjs/preset-sheets-advanced

Использование

TypeScript
import { UniverSheetsAdvancedPreset } from '@univerjs/preset-sheets-advanced'import UniverPresetSheetsAdvancedEnUS from '@univerjs/preset-sheets-advanced/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-advanced/lib/index.css'const { univerAPI } = createUniver({  locale: LocaleType.EN_US,  locales: {    [LocaleType.EN_US]: mergeLocales(      UniverPresetSheetsCoreEnUS,      UniverPresetSheetsAdvancedEnUS,     ),  },  presets: [    UniverSheetsCorePreset(),    UniverSheetsAdvancedPreset(),   ],})

Если у вас есть коммерческая лицензия Univer, инструкции по настройке см. в разделе Использование лицензии в клиенте.

Facade API

Полные определения типов Facade API доступны в разделе FacadeAPI.

Импорт

Примечание о режиме плагинов

Импортировать пакет Facade вручную нужно только в режиме плагинов. В режиме предустановки соответствующий пакет Facade уже включён, поэтому дополнительный импорт не требуется.

TypeScript
import '@univerjs-pro/sheets-outline/facade'

Создание структуры строк

С помощью Facade API можно создать группу строк:

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Group rows 2 to 6 (0-based index: startRow=1, numRows=5)fWorksheet.addRowOutline(1, 5)

Создание структуры столбцов

Аналогичным образом можно создать группу столбцов:

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Group columns B to E (0-based index: startColumn=1, numColumns=4)fWorksheet.addColumnOutline(1, 4)

Сворачивание и разворачивание структуры

Группу структуры можно программно свернуть или развернуть:

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const rowOutlines = fWorksheet.getDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW)if (rowOutlines.length > 0) {  // Collapse the first row outline group  fWorksheet.setDimensionOutlineCollapsed(rowOutlines[0].id, true)  // Expand it later  fWorksheet.setDimensionOutlineCollapsed(rowOutlines[0].id, false)}

Удаление групп структуры

Определённую группу структуры можно удалить по её идентификатору:

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()const rowOutlines = fWorksheet.getDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW)if (rowOutlines.length > 0) {  fWorksheet.removeDimensionOutline(rowOutlines[0].id)}

Очистка структуры в диапазоне

В указанном диапазоне можно удалить все группы структуры:

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Remove all row outline groups fully contained in rows 2 to 10fWorksheet.clearDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW, 1, 9)

Получение групп структуры

Можно получить все группы структуры на листе:

TypeScript
const fWorkbook = univerAPI.getActiveWorkbook()const fWorksheet = fWorkbook.getActiveSheet()// Get all row outlinesconst rowOutlines = fWorksheet.getDimensionOutlines(univerAPI.Enum.DimensionOutlineAxis.ROW)rowOutlines.forEach((outline) => {  console.log(outline.id, outline.start, outline.end, outline.collapsed)})// Get all outlines (both row and column)const allOutlines = fWorksheet.getDimensionOutlines()

Структура данных группировки

Каждая группа структуры имеет следующие свойства:

СвойствоТипОписание
idstringУникальный идентификатор группы структуры
unitIdstringИдентификатор книги
subUnitIdstringИдентификатор листа
axisDimensionOutlineAxisОсь структуры (row или column)
startnumberНачальный индекс с нуля, включительно
endnumberКонечный индекс с нуля, включительно
collapsedbooleanСвёрнута ли группа в данный момент

Проверка и ошибки

При создании групп структуры выполняются следующие проверки:

  • Недопустимый диапазон: диапазон должен быть корректным (неотрицательное начало и ненулевое количество элементов).
  • Выход за границы: диапазон должен находиться в пределах листа.
  • Пересечение групп: новые группы не могут пересекать существующие.
  • Максимальная глубина: для групп структуры задана максимальная глубина вложенности.

Диапазон разгруппировки должен полностью охватывать диапазон группы структуры, иначе проверка завершится ошибкой.

Если проверка завершится ошибкой, команда не будет выполнена, а ошибка будет передана через SheetsOutlineErrorService.

Насколько полезно это руководство?

© 2026 DreamNum Co., Ltd.