Справочник типов
Все типы экспортируются из @dhx/react-spreadsheet или @dhtmlx/trial-react-spreadsheet.
import type { SheetData, CellData, SpreadsheetRef /* ... */ } from "@dhtmlx/trial-react-spreadsheet";
CellData
Декларативное состояние одной ячейки. Все свойства необязательны; пропущенные свойства сохраняют своё текущее значение при обновлениях.
| Свойство | Тип | Описание |
|---|---|---|
value | string | number | Значение ячейки: текст, число или строка формулы (с префиксом =). |
css | string | Имя (имена) CSS-класса, ссылающееся на ключи в карте styles верхнего уровня. |
format | string | Маска формата числа или псевдоним (например, "currency" или "#,##0.00"). |
locked | boolean | Заблокирована ли ячейка (защищена от редактирования). |
validation | string | string[] | Варианты выпадающего списка для валидации данных. |
RowConfig
Метаданные ст роки. Записи нужны только для строк с нестандартной конфигурацией.
| Свойство | Тип | Описание |
|---|---|---|
height | number | Высота строки в пикселях. |
hidden | boolean | Скрыта ли строка. |
ColConfig
Метаданные столбца. Записи нужны только для столбцов с нестандартной конфигурацией.
| Свойство | Тип | Описание |
|---|---|---|
width | number | Ширина столбца в пикселях. |
hidden | boolean | Скрыт ли столбец. |
MergedRange
Определяет диапазон объединённых ячеек с использованием координат строк/столбцов, начиная с 0.
| Свойство | Тип | Описание |
|---|---|---|
from | { row: number; column: number } | Верхний левый угол объединения (индекс с 0). |
to | { row: number; column: number } | Нижний правы й угол объединения (индекс с 0). |
Пример:
// Объединение A1:B2
const merge: MergedRange = {
from: { row: 0, column: 0 },
to: { row: 1, column: 1 },
};
FreezeConfig
Конфигурация закреплённой панели для листа.
| Свойство | Тип | Описание |
|---|---|---|
col | number | Закрепить столбцы до этого номера столбца (индекс с 0). undefined = без закрепления столбцов. |
row | number | Закрепить строки до этого номера строки (индекс с 0). undefined = без закрепления строк. |
SheetFilter
Конфигурация фильтра для столбца внутри листа.
| Свойство | Тип | Описание |
|---|---|---|
cell | string | Ссылка на ячейку, идентифицирующую отфильтрованный столбец (например, "A1"). |
rules | IFilterRules[] | Применяемые правила фильтрации. Пустой массив сбрасывает фильтр. |
SheetSort
Конфигурация сортировки для столбца внутри листа.
| Свойство | Тип | Описание |
|---|---|---|
cell | string | Ссылка на ячейку или диапазон для операции сортировки (например, "B1" или "A1:E8"). Используйте диапазон для сортировки нескольких столбцов с сохранением целостности строк. |
dir | 1 | -1 | Направление сортировки: 1 = по возрастанию, -1 = по убыванию. |
SheetData
Полное декларативное состояние одного листа таблицы.
| Свойство | Тип | Обязательно | Описание |
|---|---|---|---|
id | Id | Да | Уникальный идентификатор листа. Должен быть стабильным между рендерами. |
name | string | Да | Отображаемое имя на вкладке листа. |
cells | Record<string, CellData> | Да | Данные ячеек, с ключом по ссылке на ячейку (например, "A1" или "B2"). Записи нужны только для ячеек с нестандартными данными. |
rows | Record<number, RowConfig> | Нет | Конфигурация строк с ключом по номеру строки (индекс с 0). |
cols | Record<number, ColConfig> | Нет | Конфигурация столбцов с ключом по номеру столбца (индекс с 0). |
merged | MergedRange[] | Нет | Диапазоны объединённых ячеек. |
freeze | FreezeConfig | Нет | Конфигурация закреплённых панелей. |
filter | SheetFilter | Нет | Конфигурация фильтра столбца. Установите undefined, чтобы сбросить. |
sort | SheetSort | Нет | Конфигурация сортировки. |
Пример:
const sheet: SheetData = {
id: "sheet1",
name: "Inventory",
cells: {
A1: { value: "Product", css: "bold" },
B1: { value: "Quantity", css: "bold" },
A2: { value: "Laptop" },
B2: { value: 42 },
},
cols: { 0: { width: 200 } },
freeze: { row: 1 },
};
SearchConfig
Управляемое состояние поиска. Передайте объект для запуска/обновления поиска, передайте undefined, чтобы закрыть его.
| Свойство | Тип | Обязательно | Описание |
|---|---|---|---|
query | string | Да | Текст для поиска. |
open | boolean | Нет | Открыть ли встроенный интерфейс поиска. По умолчанию: false. |
sheetId | Id | Нет | Ограничить поиск конкретным листом по id. |
SpreadsheetLocale
Конфигурация локализации для меток интерфейса и названий формул.
| Свойство | Тип | Описание |
|---|---|---|
locale | Record<string, string> | Переопределения строк интерфейса. Ключи соответствуют словарю локализации библиотеки. |
formulas | Record<string, [string, string?][]> | Локализованные имена формул, сгруппированные по категориям. Каждый элемент — кортеж: [localizedName, optionalDescription?]. |
SpreadsheetTheme
type SpreadsheetTheme = "light" | "dark" | "contrast-light" | "contrast-dark" | string;
Встроенные цветовые темы. Также принимает строки с именами пользовательских тем.
IExecuteConfig
Конфигурация выполнения действия, передаваемая в onBeforeAction / onAfterAction. Форма зависит от типа действия.
| Свойство | Тип | Описание |
|---|---|---|
row | number | Индекс целевой строки. |
col | number | Индекс целевого столбца. |
target | unknown | Цель, специфичная для действия. |
val | unknown | Новое значение. |
prev | unknown | Предыдущее значение. |
action | Actions | string | Идентификатор действия. |
groupAction | Actions | string | Идентификатор родительского группового действия. |
cell | string | Ссылка на ячейку (например, "A1"). |
pageId | Id | Id целевого листа. |
pageName | string | Имя целевого листа. |
[key: string] | unknown | Дополнительные свойства, специфичные для действия. |
SpreadsheetRef
Императивный дескриптор, доступный через React.forwardRef. Предоставляет прямой доступ к базовому экземпляру DHTMLX Spreadsheet для операций, которые не отображаются на декларативные пропсы.
| Свойство | Тип | Описание |
|---|---|---|
instance | ISpreadsheet | null | Базовый экземпляр виджета. null до инициализации и после ра змонтирования. |
Пример:
const ref = useRef<SpreadsheetRef>(null);
// Сериализация данных
const data = ref.current?.instance?.serialize();
// Программный выбор
ref.current?.instance?.selection.setSelectedCell("A1:C5");
// Отмена/возврат
ref.current?.instance?.undo();
ref.current?.instance?.redo();