API Univer Docs
Univer Docs предоставляет профессиональные средства вёрстки документов, концептуально близкие к Microsoft Word.
Импорт
import '@univerjs/docs/facade'import '@univerjs/docs-ui/facade'Работа с документами
В документах unitId служит уникальным идентификатором. Идентификатора subUnitId у документов нет.
Текст документа хранится в строке body.dataStream, которая не содержит сведений о стилях.
Сведения о стилях хранятся отдельно, в другой структуре данных, и связываются с текстом с помощью индексов.
Для обозначения переносов строк, разрывов страниц, разделов, абзацев и таблиц в тексте используются специальные символы. При отрисовке они преобразуются в соответствующие элементы.
Подробнее об устройстве структур данных документа читайте в статьях Univer Document Architecture and Module Design и An Initial Exploration of Univer Document Typesetting Design.
Создание документа
Вызовите univerAPI.createDocument(data), чтобы создать документ и получить его фасадную обёртку FDocument.
Необязательный параметр — объект с исходными данными документа. Если передать {}, будет создан пустой документ.
Если вместо Facade API вы работаете напрямую с базовым экземпляром univer, используйте univer.createUnit(UniverInstanceType.UNIVER_DOC, data).
const doc = univerAPI.createDocument(data)Получение unitId документа
const doc = univerAPI.getActiveDocument()const unitId = doc?.getId()Получение данных документа
const doc = univerAPI.getActiveDocument()const saveData = doc.save()Удаление документа
Когда документ больше не нужен, вызовите метод dispose экземпляра Univer, чтобы уничтожить этот экземпляр.
univer.dispose()Работа с текстом
Изменяйте текстовые элементы в области форматированного текста.
Вставка текста
Добавьте указанный текст в конец этой области.
const doc = univerAPI.getActiveDocument()doc?.insertText(0, 'Univer')Удаление текста
Удалите текст по смещениям в документе.
const doc = univerAPI.getActiveDocument()doc?.deleteRange({ startOffset: 0, endOffset: 1 })Изменение стиля
Задайте стиль текста в абзаце.
const doc = univerAPI.getActiveDocument()const paragraph = doc?.getParagraphs()[0]paragraph?.setStyle({ textStyle: { cl: { rgb: '#FF0000', }, },})Вставка разрыва страницы
Символ \f обозначает разрыв страницы и позволяет вставить его в документ.
const doc = univerAPI.getActiveDocument()doc?.insertText(0, '\f')Статистика документа
Используйте базовую модель DocumentDataModel, чтобы подсчитать статистику всего документа или выбранных диапазонов.
const doc = univerAPI.getActiveDocument()if (!doc) throw new Error('No active document')const statistics = await doc.getDocumentDataModel().getStatistics({ locale: univerAPI.Enum.LocaleType.RU_RU,})console.log(statistics.words, statistics.charactersWithSpaces, statistics.paragraphs)getStatistics() возвращает количество слов, символов и абзацев. Передайте ranges, чтобы считать только выделенный текст, и signal, чтобы отменить ставший ненужным расчёт.
Насколько полезно это руководство?