Импорт и экспорт файлов Office

Использование Exchange для обмена содержимым между файлами Office и совместными Units.

Преобразование Office предоставляет @univerjs-pro/exchange-node, а не AI SDK. CLI вызывает importFile() и exportToFile() на файловой границе, затем использует AI SDK и Collaboration SDK для работы с Unit.

Соблюдение границ SDK

TypeScript
import { exportToFile, importFile } from "@univerjs-pro/exchange-node";
ВозможностьОтветственный
Преобразование файлов Office и UnitDataExchange
Среда без интерфейса, проверка содержимого и выполнение FacadeAI SDK
Снимки, наборы изменений, ревизии и сохранениеCollaboration SDK
Пути, политика форматов, бизнес-API и сопоставление ошибокБизнес-приложение

Импорт совместной Unit

Приложение читает Office через Exchange и отправляет полученные UnitData в Collaboration Server для создания Unit:

text
файл Office→ importFile()→ UnitData→ API бизнес-сервера→ совместная Unit

Приложение определяет начальную ревизию, бизнес-метаданные и результат. После создания CLI и Web работают с Unit через сервер.

Экспорт актуальной ревизии

CLI сначала загружает последнюю подтверждённую ревизию через Collaboration Runtime, затем передаёт полные UnitData в Exchange:

text
совместная Unit→ актуальные UnitData→ exportToFile()→ файл Office

Формат экспорта определяется расширением выходного файла.

Предоставление файловых операций через Commander

AI SDK не предоставляет пресет команд импорта и экспорта Office. Приложение объединяет Exchange, Collaboration Runtime и собственный серверный API через Commander:

TypeScript
import { Command } from "commander";interface IFileExchangeDependencies {  importFile(path: string): Promise<unknown>;  createUnit(unitData: unknown): Promise<unknown>;  loadLatestUnitData(unitId: string): Promise<unknown>;  exportFile(unitData: unknown, path: string): Promise<void>;  writeResult(result: unknown): void;}function addFileExchangeCommands(program: Command, dependencies: IFileExchangeDependencies): void {  program.addCommand(    new Command("import").argument("<office-file>").action(async (sourcePath) => {      const unitData = await dependencies.importFile(sourcePath);      const created = await dependencies.createUnit(unitData);      dependencies.writeResult(created);    }),  );  program.addCommand(    new Command("export")      .argument("<office-file>")      .requiredOption("--unit <id>")      .action(async (outputPath, { unit }) => {        const unitData = await dependencies.loadLatestUnitData(unit);        await dependencies.exportFile(unitData, outputPath);      }),  );}

Все возможности вне Commander явно объявлены в IFileExchangeDependencies; скрытых помощников нет. Приложение реализует преобразование через Exchange importFile() / exportToFile(), loadLatestUnitData() через Collaboration Runtime и внедряет свой серверный API и представление результата.

Поддерживаемые форматы

UnitИмпортЭкспорт
Sheet.xls, .xlsx, .xlsm, .csv, .tsv.xlsx, .csv, .tsv
Doc.doc, .docx.docx
Slide.ppt, .pptx, .pptm, .ppsx, .ppsm, .potx.pptx

Приложение должно отклонить расширение, не соответствующее типу Unit, до генерации файла.

Только локальная CLI

Можно обойти Collaboration Server, передать импортированное содержимое прямо в локальную среду без интерфейса и экспортировать Office. Это удобно для разовой обработки, но не предоставляет общих ревизий, живого Web-просмотра, History или Worktree.

Имена команд, аргументы путей и вывод определяет приложение. Совместный сценарий см. в Загрузке и операциях с содержимым. После файловой границы добавьте Визуальную проверку, чтобы AI Agent мог проверить отрисованные UnitData.

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

© 2026 DreamNum Co., Ltd.