Импорт и экспорт
Bases импортирует XLSX, XLS, CSV и TSV и экспортирует XLSX, CSV и TSV. Например, можно импортировать список клиентов из Excel, добавить поля и представления, затем экспортировать данные таблицы.
Этим API нужен сервер преобразования. Начните с интеграции обмена файлами и убедитесь, что сервер поддерживает документы Bases и нужные форматы.
Поддерживаемые форматы
Таблица описывает браузерные API этой страницы. Для преобразования файлов Office нужен сервер с поддержкой того же типа документа и формата.
| Импорт | Экспорт |
|---|---|
.xls, .xlsx, .csv, .tsv | .xlsx, .csv, .tsv |
CSV и TSV экспортируют одну таблицу, выбранную через tableId. Эти текстовые форматы не сохраняют представления, права и другие ресурсы Base. Для полной резервной копии приложения используйте снимок Base.
Установка и регистрация
Добавьте пакеты в инициализированный редактор Bases:
pnpm add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientnpm install @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientyarn add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientbun add @univerjs-pro/exchange-client @univerjs-pro/bases-exchange-clientimport { UniverBasesExchangeClientPlugin } from '@univerjs-pro/bases-exchange-client'import { UniverExchangeClientPlugin } from '@univerjs-pro/exchange-client'import '@univerjs-pro/bases/facade'import '@univerjs-pro/bases-exchange-client/facade'import '@univerjs-pro/exchange-client/facade'univer.registerPlugin(UniverExchangeClientPlugin, exchangeConfig)univer.registerPlugin(UniverBasesExchangeClientPlugin)exchangeConfig содержит настройки загрузки, преобразования, опроса задач и скачивания файлов; подготовьте их по руководству интеграции.
Импорт для редактирования на странице
file может быть выбранным пользователем объектом File или URL удалённого файла. Возвращаемый снимок содержит данные Base, которые может загрузить редактор:
const snapshot = await univerAPI.importBaseToSnapshotAsync(file)if (snapshot) { univerAPI.createBase(snapshot)}Импорт снимка не требует совместного редактирования, но требует серверного преобразования. Чтобы пользователь мог вернуться к работе, сохраняйте base.save() согласно разделу Сохранение и восстановление снимков.
Экспорт файла
Экспортируйте текущую Base в Excel:
import { ExchangeFormat } from '@univerjs-pro/exchange-client'const base = univerAPI.getActiveBase()if (!base) throw new Error('Open a Base first')const file = await univerAPI.exportBaseBySnapshotAsync(base.save(), ExchangeFormat.XLSX)if (file) { univerAPI.downloadFile(file, 'database', ExchangeFormat.XLSX)}CSV и TSV представляют одну таблицу. При экспорте Base с несколькими таблицами явно передайте tableId:
const table = base.getTables()[0]if (!table) throw new Error('Create a table first')const file = await univerAPI.exportBaseBySnapshotAsync( base.save(), ExchangeFormat.CSV, table.getId(),)if (file) { univerAPI.downloadFile(file, table.getName(), ExchangeFormat.CSV)}Для TSV замените ExchangeFormat.CSV на ExchangeFormat.TSV. Экспорт файлов служит для обмена данными таблиц. Для полной резервной копии сохраните снимок Base: CSV не сохраняет представления, права и другие ресурсы.
Импорт совместного документа
Подключите совместное редактирование Bases, выполните импорт и загрузите документ по ID, возвращённому сервером:
import '@univerjs-pro/collaboration-client/facade'const unitId = await univerAPI.importBaseToUnitIdAsync(file)if (unitId) { await univerAPI.getCollaboration().loadBaseAsync(unitId)}Для экспорта серверного документа используйте exportBaseByUnitIdAsync(unitId, format, tableId?). Перед экспортом дождитесь синхронизации ожидающих изменений из браузера.
Структура и формулы Excel
Настройте плагин обмена Bases для изменения поведения преобразования. Ниже приведены значения по умолчанию; используйте эту регистрацию вместо предыдущей:
import { ExchangeBaseExportMode, ExchangeBaseFormulaPolicy, ExchangeBaseImportMode,} from '@univerjs-pro/exchange-client'univer.registerPlugin(UniverBasesExchangeClientPlugin, { importSourceMode: ExchangeBaseImportMode.AUTO, importFormulaPolicy: ExchangeBaseFormulaPolicy.CONVERT_THEN_VALUES, exportStructureMode: ExchangeBaseExportMode.TABLES, exportFormulaPolicy: ExchangeBaseFormulaPolicy.FAIL,})- Источник импорта:
AUTOавтоматически выбирает таблицы Excel и видимые листы;TABLESимпортирует только таблицы Excel;SHEETS— видимые листы;HYBRID— таблицы Excel и видимые листы без таблиц Excel. - Структура экспорта:
TABLESсоздаёт нативные таблицы Excel для непустых таблиц Base, оставляя пустые обычными диапазонами.RANGESэкспортирует всё в обычные диапазоны листа. - Формулы: импорт пытается преобразовать формулу и использует кешированный результат для неподдерживаемых формул. Экспорт по умолчанию требует успешного преобразования.
VALUESиспользует только кешированные результаты, аTEXTсохраняет исходные формулы как текст. При экспортеCONVERT_THEN_VALUESтакже завершается ошибкой, если формулу нельзя преобразовать.
Проверяйте преобразование полей и формул на реальных файлах приложения. Методы могут вернуть undefined или выбросить ошибку запроса либо преобразования; обработайте оба случая в интерфейсе.
Удаление встроенных меню и UI-взаимодействий для импорта и экспорта
Univer больше не включает встроенные меню и UI-взаимодействия для импорта и экспорта. Базовые сервисы и Facade API остаются доступными.
Если вашему приложению нужны прежние меню и UI-взаимодействия для импорта и экспорта, используйте пример миграции встроенных меню и UI-взаимодействий для импорта и экспорта, чтобы реализовать их с помощью собственного плагина. Полный исходный код примера доступен для просмотра онлайн и скачивания.
Насколько полезно это руководство?