OfficeCLI — первый в мире офисный пакет, спроектированный специально для ИИ-агентов.
Дайте любому ИИ-агенту полный контроль над Word, Excel и PowerPoint — одной строкой кода.
Открытый исходный код. Один бинарный файл. Не требует установки Office. Без зависимостей. Работает везде.
Встроенный движок HTML-рендеринга OfficeCLI воспроизводит документы с высокой точностью — именно это даёт ИИ «глаза». Он преобразует .docx / .xlsx / .pptx в HTML или PNG, замыкая цикл рендеринг → просмотр → исправление.
Процесс создания презентации с помощью OfficeCLI в AionUi
Презентации PowerPoint
Документы Word
Таблицы Excel
Все документы выше созданы целиком ИИ-агентами с помощью OfficeCLI — без шаблонов и ручного редактирования.
Для ИИ-агентов — запуск одной строкой
Вставьте это в чат вашего ИИ-агента — он прочитает файл навыков и автоматически всё установит:
curl -fsSL https://officecli.ai/SKILL.md
Всё. Файл навыков (skill file) объясняет агенту, как установить бинарный файл и использовать все команды.
Для людей
Вариант А — GUI: Установите AionUi — настольное приложение, позволяющее создавать и редактировать документы Office с помощью естественного языка на базе OfficeCLI. Просто опишите, что вам нужно, и AionUi сделает всё остальное.
Вариант Б — CLI: Скачайте бинарный файл для вашей платформы из GitHub Releases и выполните:
officecli install
Команда копирует бинарный файл в PATH и устанавливает навык officecli во все обнаруженные ИИ-инструменты для написания кода — Claude Code, Cursor, Windsurf, GitHub Copilot и другие. Агент сразу же сможет создавать, читать и редактировать документы Office без какой-либо дополнительной настройки.
Для разработчиков — живая демонстрация за 30 секунд
# 1. Установка (macOS / Linux) — или: brew install officecli / npm install -g @officecli/officecli
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash
# Windows (PowerShell): irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex
# 2. Создать пустую презентацию PowerPoint
officecli create deck.pptx
# 3. Запустить живой предпросмотр — откроет http://localhost:26315 в браузере
officecli watch deck.pptx
# 4. Открыть второй терминал, добавить слайд — браузер обновится мгновенно
officecli add deck.pptx / --type slide --prop title="Hello, World!"
Всё. Каждая команда add, set или remove будет обновлять предпросмотр в реальном времени. Экспериментируйте — браузер служит живой обратной связью.
Быстрый старт
# Создать презентацию и добавить содержимое
officecli create deck.pptx
officecli add deck.pptx / --type slide --prop title="Q4 Report" --prop background=1A1A2E
officecli add deck.pptx '/slide[1]' --type shape \
--prop text="Revenue grew 25%" --prop x=2cm --prop y=5cm \
--prop font=Arial --prop size=24 --prop color=FFFFFF
# Просмотр в виде структуры
officecli view deck.pptx outline
# → Slide 1: Q4 Report
# → Shape 1 [TextBox]: Revenue grew 25%
# Просмотр как HTML — открывает отрендеренный предпросмотр в браузере без сервера
officecli view deck.pptx html
# Получить структурированный JSON для любого элемента
officecli get deck.pptx '/slide[1]/shape[1]' --json
# Сохранить и закрыть — записывает активную сессию на диск
officecli close deck.pptx
{
"tag": "shape",
"path": "/slide[1]/shape[1]",
"attributes": {
"name": "TextBox 1",
"text": "Revenue grew 25%",
"x": "720000",
"y": "1800000"
}
}
Зачем OfficeCLI?
То, что раньше требовало 50 строк на Python и трёх отдельных библиотек:
from pptx import Presentation
from pptx.util import Inches, Pt
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[0])
title = slide.shapes.title
title.text = "Q4 Report"
# ... ещё 45 строк ...
prs.save('deck.pptx')
Теперь выполняется одной командой:
officecli add deck.pptx / --type slide --prop title="Q4 Report"
Что умеет OfficeCLI:
-
Создавать документы с нуля — пустые или сразу с содержимым
-
Читать текст, структуру, стили, формулы — в виде обычного текста или структурированного JSON
-
Анализировать проблемы форматирования, несоответствия стилей и структурные ошибки
-
Изменять любой элемент — текст, шрифты, цвета, разметку, формулы, диаграммы, изображения
-
Реорганизовывать содержимое — добавлять, удалять, перемещать, копировать элементы между документами
| Формат | Чтение | Изменение | Создание |
|---|---|---|---|
Word (.docx) |
✅ |
✅ |
✅ |
Excel (.xlsx) |
✅ |
✅ |
✅ |
PowerPoint (.pptx) |
✅ |
✅ |
✅ |
Word — полная поддержка i18n и RTL (слоты шрифтов на скрипт, теги языка BCP-47 на скрипт lang.latin/ea/cs, жирность/курсив/размер для сложных скриптов, direction=rtl каскадируется через абзац/фрагмент/раздел/таблицу/стиль/колонтитул/docDefaults, сокращения rtlGutter + pgBorders, учитывающая локаль нумерация страниц для хинди/арабского/тайского/CJK; create --locale ar-SA автоматически включает RTL), абзацы (framePr, сокращения табуляций, отступы в символах), фрагменты текста (underline.color, позиция в полупунктах), таблицы (виртуальные операции над столбцами: добавить/удалить/переместить/скопировать, hMerge), стили, текстовые блоки / фигуры (поворот, textDirection eaVert/vert270, градиент, тень, прозрачность), верхние/нижние колонтитулы, изображения (PNG/JPG/GIF/SVG), уравнения (ввод в LaTeX), диаграммы (mermaid → нативные редактируемые фигуры или любой тип mermaid как полноточный PNG), комментарии, сноски, водяные знаки, закладки, оглавление, диаграммы, гиперссылки, разделы, поля формы, элементы управления содержимым (SDT), поля (22 типа без параметров + MERGEFIELD / REF / PAGEREF / SEQ / STYLEREF / DOCPROPERTY / IF), OLE-объекты, версии / отслеживание изменений (revision.type=ins\|del\|format\|moveFrom\|moveTo + revision.action=accept\|reject, селектор по автору /revision[@author=Alice], отслеживаемый поиск и замена), цвет фона страницы, свойства документа
Excel — ячейки (фонетическая разметка / фуригана при добавлении, --shift left\|up в стиле Excel-UI при удалении / shift=right\|down при добавлении), формулы (350+ встроенных функций с автоматическим вычислением при записи, динамические массивы с разливом с автопрефиксом _xlfn., финансовые / облигационные и статистические семейства, OFFSET/INDIRECT, тела формул с именованными диапазонами подставляются при разборе, перезапись ссылок в формулах при вставке строк/столбцов), листы (visible/hidden/veryHidden, поля печати, printTitleRows/Cols, RTL sheetView, каскадное переименование листов, фильтр раздувания пустых ячеек при открытии), булевы селекторы and/or (row[Salary>5000 and Region=EMEA]), таблицы, сортировка (лист / диапазон, несколько ключей, с учётом sidecar), условное форматирование, диаграммы (включая box-whisker, Парето с автосортировкой и накопительным %, логарифмическая ось), сводные таблицы (несколько полей, группировка по дате, showDataAs, сортировка, итоги/подитоги, компактный/структурированный/табличный макет, повторение меток элементов, пустые строки, вычисляемые поля, постоянные фильтры labelFilter / topN, копирование кэша + общий доступ между сводными таблицами), срезы, именованные диапазоны, проверка данных, изображения (PNG/JPG/GIF/SVG с резервным двойным представлением), спарклайны, комментарии (RTL), автофильтр, фигуры, OLE-объекты, импорт CSV/TSV, адресация ячеек $Sheet:A1
PowerPoint — слайды (переключение верхнего/нижнего колонтитула/даты/номера слайда, скрытие), фигуры (узорная заливка, эффект размытия, подсказка гиперссылки + ссылки-переходы на слайды, выделение цветом фрагментов, типизированные add/set/remove для slideMaster/slideLayout, псевдоним стрелки, effective.X + effective.X.src), изображения (PNG/JPG/GIF/SVG, режимы заливки: stretch/contain/cover/tile, яркость/контраст/свечение/тень, поворот, ссылка и подсказка), таблицы (встроенный каталог стилей PowerPoint, виртуальный get /col[C] + swap/copyFrom, перемещение/копирование строк и столбцов, псевдоним заливки/фона), диаграммы (pieOfPie, barOfPie, сеттеры осей/линий сетки для каждого атрибута, добавление/удаление серий с палитрой темы, сокращение anchor=x,y,w,h), анимации (15 пресетов акцента и 16 пресетов выхода на основе шаблонов, цепочки из нескольких эффектов, пресеты траектории движения, repeat/restart/autoReverse, анимации диаграмм + chartBuild), переходы (morph + p14 + 12 пресетов p15 PowerPoint 2013+), 3D-модели (.glb) (комбинированный rotation=ax,ay,az), масштабирование слайда, уравнения (ввод в LaTeX), диаграммы (mermaid flowchart / sequence → нативные редактируемые фигуры или любой тип mermaid как полноточный PNG), темы, соединители (from/to принимают полный путь /slide[N]/shape[@name=Foo]), видео/аудио (цикл, автозапуск), группы (ссылка и подсказка; Get/Query/Add/Remove спускаются внутрь групп), заметки (RTL, язык), комментарии (RTL, устаревшие + современные потоковые комментарии p188 с полным round-trip), SmartArt (round-trip через add-part + raw-set), OLE-объекты, заполнители (add/set по phType)
Варианты применения
Для разработчиков:
-
Автоматизация генерации отчётов из баз данных или API
-
Пакетная обработка документов (массовый поиск и замена, обновление стилей)
-
Построение документных конвейеров в CI/CD (генерация документов по результатам тестов)
-
Безголовая автоматизация Office в Docker и контейнерных средах
Для ИИ-агентов:
-
Генерация презентаций по запросу пользователя (см. примеры выше)
-
Извлечение структурированных данных из документов в JSON
-
Проверка качества документов перед отправкой
Для команд:
-
Клонирование шаблонов документов и заполнение их данными
-
Автоматическая проверка документов в CI/CD-конвейерах
Установка
Поставляется как единый самодостаточный бинарный файл. Среда выполнения .NET встроена — ничего устанавливать не нужно.
Установка одной командой:
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex
Или через менеджер пакетов:
# Homebrew (macOS / Linux)
brew install officecli
# Scoop (Windows)
scoop install officecli
# npm (все платформы — загружает нативный бинарный файл для вашей платформы)
npm install -g @officecli/officecli
Или скачайте вручную из GitHub Releases:
| Платформа | Бинарный файл |
|---|---|
macOS Apple Silicon |
|
macOS Intel |
|
Linux x64 |
|
Linux ARM64 |
|
Windows x64 |
|
Windows ARM64 |
|
Проверка установки: officecli --version
Или самоустановка из скачанного бинарного файла (либо просто запустите officecli без аргументов):
officecli install # явный вызов
officecli # запуск без аргументов тоже запускает установку
Обновления проверяются автоматически в фоне. Отключить: officecli config autoUpdate false или пропустить для одного вызова с помощью OFFICECLI_SKIP_UPDATE=1. Конфигурация хранится в ~/.officecli/config.json.
Ключевые возможности
Встроенные движки и примитивы генерации
OfficeCLI самодостаточен. Все перечисленные возможности входят в состав бинарного файла — Office не требуется.
Движок рендеринга — высокая точность, встроенный
Ключевой компонент OfficeCLI: написанный с нуля высокоточный движок HTML-рендеринга, позволяющий ИИ-агенту видеть отрендеренный документ вместо того, чтобы гадать по DOM. Охватывает фигуры, диаграммы (линии тренда, планки погрешностей, водопадные, свечные, спарклайны), уравнения (OMML → LaTeX, отрисовка с KaTeX), 3D-модели .glb через Three.js, переходы morph, масштабирование слайдов и эффекты фигур. Постраничные PNG-снимки экрана создаются путём передачи отрендеренного HTML в безголовый браузер. Три режима:
-
view html— самодостаточный HTML-файл со встроенными ресурсами. Открывается в любом браузере. -
view screenshot— PNG на страницу, готовый к чтению мультимодальными агентами. -
watch— локальный HTTP-сервер с автообновляемым предпросмотром; каждая командаadd/set/removeмгновенно обновляет браузер. Режим watch для Excel поддерживает встроенное редактирование ячеек и перетаскивание диаграмм.
officecli view deck.pptx html -o /tmp/deck.html
officecli view deck.pptx screenshot -o /tmp/deck.png # добавьте --page 1-N для нескольких слайдов
officecli watch deck.pptx # http://localhost:26315
Без визуализации агент, генерирующий слайды, работает вслепую — он может читать DOM, но не видит, вышел ли заголовок за границы или перекрываются ли две фигуры. Поскольку рендеринг встроен в бинарный файл, цикл рендеринг → просмотр → исправление работает в CI, в Docker, на сервере без дисплея — везде, где запускается бинарный файл.
Движок формул и сводных таблиц
Более 350 встроенных функций Excel вычисляются автоматически при записи — напишите =SUM(A1:A2), выполните get для ячейки, и значение уже там. Никакого обращения к Office для пересчёта. Охватывает динамические массивы с разливом (FILTER / SORT / UNIQUE / SEQUENCE / LET / LAMBDA / MAP), VLOOKUP / XLOOKUP / INDEX / MATCH, финансовую и облигационную математику (XIRR / PRICE / YIELD / DURATION / COUPNUM), статистические распределения, тесты и регрессию (NORM.DIST / T.TEST / LINEST), функции дат и текста.
А также нативные сводные таблицы OOXML из диапазона-источника одной командой — несколько полей в строках/столбцах/фильтрах, 10 агрегаций, режимы showDataAs, группировка по дате, вычисляемые поля, топ-N, макеты. Кэш сводной таблицы и её определение записываются в OOXML, так что Excel открывает файл с уже готовой агрегацией:
officecli add sales.xlsx '/Sheet1' --type pivottable \
--prop source='Data!A1:E10000' --prop rows='Region,Category' \
--prop cols=Quarter --prop values='Revenue:sum,Units:avg' \
--prop showDataAs=percentOfTotal
Слияние шаблонов — создать один раз, заполнять сколько угодно
merge заменяет заполнители {{key}} в любом .docx / .xlsx / .pptx данными из JSON — в абзацах, ячейках таблиц, фигурах, верхних/нижних колонтитулах и заголовках диаграмм. Агент разрабатывает макет один раз (это дорого); производственный код заполняет его N раз (дёшево, предсказуемо, без затрат токенов). Исключает сценарий, при котором агент заново генерирует каждый отчёт с нуля и получает N несовместимых макетов.
officecli merge invoice-template.docx out-001.docx --data '{"client":"Acme","total":"$5,200"}'
officecli merge q4-template.pptx q4-acme.pptx --data data.json
Дамп с полным round-trip — учитесь на готовых документах
dump сериализует любой .docx, .pptx или .xlsx — весь документ или любое поддерево (отдельный абзац, таблицу, слайд, рабочий лист, часть стилей, нумерацию, тему или настройки) — в воспроизводимый пакетный JSON; batch воспроизводит его. Получив образец, которому нужно следовать, агент читает структурированную спецификацию вместо сырого XML OOXML, изменяет и воспроизводит. Объединяет сценарии «у меня есть готовый шаблон» и «сгенерируй мне 100 вариаций».
officecli dump existing.docx -o blueprint.json # весь документ
officecli dump existing.docx /body/tbl[1] -o table.json # любое поддерево
officecli dump existing.xlsx /Sheet1 -o sheet.json # один рабочий лист
officecli batch new.docx --input blueprint.json
Резидентный режим и пакетная обработка
Для многошаговых рабочих процессов резидентный режим (resident mode) держит документ в памяти. Пакетный режим применяет несколько операций за один проход.
# Резидентный режим — минимальная задержка через именованные каналы
officecli open report.docx
officecli set report.docx /body/p[1]/r[1] --prop bold=true
officecli set report.docx /body/p[2]/r[1] --prop color=FF0000
officecli close report.docx
# Пакетный режим — выполнение нескольких команд (по умолчанию атомарный: сбой любого элемента откатывает весь пакет)
echo '[{"command":"set","path":"/slide[1]/shape[1]","props":{"text":"Hello"}},
{"command":"set","path":"/slide[1]/shape[2]","props":{"fill":"FF0000"}}]' \
| officecli batch deck.pptx --json
# Встроенный пакет с --commands (без stdin)
officecli batch deck.pptx --commands '[{"op":"set","path":"/slide[1]/shape[1]","props":{"text":"Hi"}}]'
# Сохранить успешно выполненное даже при сбое части элементов (поведение до версии 1.0.137)
officecli batch deck.pptx --input updates.json --best-effort --json
# Остановиться на первой неудачной команде вместо выполнения остальных (всё равно откатывает всё, если не совмещено с --best-effort)
officecli batch deck.pptx --input updates.json --stop-on-error --json
Читаете файл другим инструментом? Сначала сбросьте данные на диск. Собственные операции чтения officecli (
get/query/view) всегда видят последние правки, поэтому внутри officecli сохранение не требуется. Но активный резидент откладывает запись на диск, поэтому перед тем как другая программа прочитает файл — python‑docx/openpyxl, Microsoft Word, рендерер, доставка/загрузка — сбросьте данные:officecli set report.docx /body/p[1] --prop bold=true officecli save report.docx # сброс, резидент остаётся активным (или `close` для сброса + освобождения) python my_reader.py report.docx # теперь видит правкиАктивный резидент также автоматически сбрасывает данные вскоре после перехода в режим ожидания (адаптивно, 2–10 с, масштабируется с учётом измеренной стоимости сохранения). Для конвейера, где другая программа читает файл после каждой команды, установите
OFFICECLI_RESIDENT_FLUSH=each— каждая мутация оказывается на диске до возврата команды, резидент при этом остаётся активным. Полная модель сброса (each/auto/фиксированный/off, save / close, настройка через переменные окружения): вики → open / close.
Трёхуровневая архитектура
Начните просто — переходите глубже только при необходимости.
| Уровень | Назначение | Команды |
|---|---|---|
L1: Чтение |
Семантические представления содержимого |
|
L2: DOM |
Структурированные операции над элементами |
|
L3: Сырой XML |
Прямой доступ через XPath — универсальный запасной вариант |
|
# L1 — высокоуровневые представления
officecli view report.docx annotated
officecli view budget.xlsx text --cols A,B,C --max-lines 50
# L2 — операции на уровне элементов
officecli query report.docx "run:contains(TODO)"
officecli add budget.xlsx / --type sheet --prop name="Q2 Report"
officecli move report.docx /body/p[5] --to /body --index 1
# L3 — сырой XML, когда L2 недостаточно
officecli raw deck.pptx '/slide[1]'
officecli raw-set report.docx document \
--xpath "//w:p[1]" --action append \
--xml '<w:r><w:t>Injected text</w:t></w:r>'
Интеграция с ИИ
MCP-сервер
Встроенный MCP-сервер — регистрируется одной командой:
officecli mcp claude # Claude Code
officecli mcp cursor # Cursor
officecli mcp vscode # VS Code / Copilot
officecli mcp lmstudio # LM Studio
officecli mcp list # Проверить статус регистрации
Предоставляет все операции с документами как инструменты через JSON-RPC — доступ к оболочке не нужен.
Прямая интеграция через CLI
Подключить OfficeCLI к ИИ-агенту можно в два шага:
-
Установить бинарный файл — одна команда (см. раздел Установка)
-
Готово. OfficeCLI автоматически обнаруживает ваши ИИ-инструменты (Claude Code, GitHub Copilot, Codex), проверяя известные директории конфигурации, и устанавливает файл навыков. Агент сразу же может создавать, читать и изменять любые документы Office.
Почему ваш агент преуспеет с OfficeCLI
-
Детерминированный JSON-вывод — каждая команда поддерживает
--jsonс согласованными схемами. Никакого парсинга регулярными выражениями, никакого скрейпинга stdout. -
Адресация по пути — каждый элемент имеет стабильный путь (
/slide[1]/shape[2]). Агенты навигируют по документам, не разбираясь в пространствах имён XML. (Синтаксис OfficeCLI: индексация с 1, локальные имена элементов — не XPath.) -
Прогрессивная сложность (L1 → L2 → L3) — агенты начинают с представлений только для чтения, переходят к операциям с DOM и обращаются к сырому XML лишь при необходимости. Минимизирует расход токенов.
-
Самовосстанавливающийся рабочий процесс —
validate,view issuesи структурированные коды ошибок (not_found,invalid_value,unsupported_property) возвращают подсказки и допустимые диапазоны. Агенты самостоятельно исправляют ошибки без вмешательства человека. -
Встроенный агент-дружественный движок рендеринга —
view html/view screenshot/watchнативно выдают HTML и PNG. Office не нужен. Агенты видят свой результат и исправляют проблемы макета даже в CI / Docker / безголовых средах. -
Встроенный движок формул и сводных таблиц — более 350 функций Excel автоматически вычисляются при записи (включая динамические массивы с разливом, финансовые / облигационные и статистические семейства); нативные сводные таблицы OOXML из диапазона-источника одной командой. Агенты сразу читают вычисленные значения и готовые агрегации без обращения к Office.
-
Слияние шаблонов — агент разрабатывает макет один раз, последующий код заполняет заполнители
{{key}}N раз. Исключает сжигание токенов на повторную генерацию каждого отчёта с нуля. -
Round-trip дамп —
dumpпреобразует любой.docx,.pptxили.xlsxв воспроизводимый пакетный JSON. Агенты учатся на созданных людьми образцах, читая структурированную спецификацию, а не сырой XML OOXML. -
Встроенная справка — когда агент не уверен в названиях свойств или форматах значений, он выполняет
officecli <format> set <element>вместо того, чтобы гадать. -
Автоустановка — OfficeCLI обнаруживает ваши ИИ-инструменты (Claude Code, Cursor, VS Code, …) и настраивается самостоятельно. Ручная установка файла навыков не требуется.
Встроенная справка
Не гадайте с названиями свойств — воспользуйтесь справкой:
officecli help pptx set # Все настраиваемые элементы и свойства
officecli help pptx set shape # Подробности для одного типа элемента
officecli help docx query # Справка по селекторам: атрибуты, :contains, :has() и др.
Выполните officecli --help для полного обзора.
Схемы JSON-вывода
Все команды поддерживают --json. Общие форматы ответов:
Одиночный элемент (get --json):
{"tag": "shape", "path": "/slide[1]/shape[1]", "attributes": {"name": "TextBox 1", "text": "Hello"}}
Список элементов (query --json):
[
{"tag": "paragraph", "path": "/body/p[1]", "attributes": {"style": "Heading1", "text": "Title"}},
{"tag": "paragraph", "path": "/body/p[5]", "attributes": {"style": "Heading1", "text": "Summary"}}
]
Ошибки возвращают ненулевой код выхода со структурированным объектом ошибки, включающим код ошибки, подсказку и допустимые значения при их наличии:
{
"success": false,
"error": {
"error": "Slide 50 not found (total: 8)",
"code": "not_found",
"suggestion": "Valid Slide index range: 1-8"
}
}
Коды ошибок: not_found, invalid_value, unsupported_property, invalid_path, unsupported_type, missing_property, file_not_found, file_locked, invalid_selector. Названия свойств автоматически исправляются — опечатка в имени свойства возвращает подсказку с наиболее близким совпадением.
Восстановление после ошибок — агенты самостоятельно исправляются, проверяя доступные элементы:
# Агент пробует неверный путь
officecli get report.docx /body/p[99] --json
# Возвращает: {"success": false, "error": {"error": "...", "code": "not_found", "suggestion": "..."}}
# Агент самостоятельно исправляется, проверяя доступные элементы
officecli get report.docx /body --depth 1 --json
# Возвращает список доступных дочерних элементов, агент выбирает правильный путь
Подтверждения мутаций (set, add, remove, move, create с --json):
{"success": true, "path": "/slide[1]/shape[1]"}
Выполните officecli --help для подробной информации о кодах выхода и форматах ошибок.
Сравнение
| OfficeCLI | Microsoft Office | LibreOffice | python-docx / openpyxl | |
|---|---|---|---|---|
Открытый код и бесплатность |
✓ (Apache 2.0) |
✗ (платная лицензия) |
✓ |
✓ |
Нативный CLI + JSON для ИИ |
✓ |
✗ |
✗ |
✗ |
Нулевая установка (один бинарный файл) |
✓ |
✗ |
✗ |
✗ (Python + pip) |
Вызов из любого языка |
✓ (CLI) |
✗ (COM/Add-in) |
✗ (UNO API) |
Только Python |
Доступ к элементам по пути |
✓ |
✗ |
✗ |
✗ |
Резервный доступ к сырому XML |
✓ |
✗ |
✗ |
Частично |
Встроенный агент-дружественный движок рендеринга |
✓ |
✗ |
✗ |
✗ |
Безголовый вывод HTML/PNG |
✓ |
✗ |
Частично |
✗ |
Слияние шаблонов ( |
✓ |
✗ |
✗ |
✗ |
Round-trip дамп → пакетный JSON |
✓ |
✗ |
✗ |
✗ |
Живой предпросмотр (автообновление при правке) |
✓ |
✗ |
✗ |
✗ |
Безголовый / CI |
✓ |
✗ |
Частично |
✓ |
Кроссплатформенность |
✓ |
Windows/Mac |
✓ |
✓ |
Word + Excel + PowerPoint |
✓ |
✓ |
✓ |
Отдельные библиотеки |
Справочник команд
| Команда | Описание |
|---|---|
Создать пустой .docx, .xlsx или .pptx (тип определяется по расширению) |
|
Просмотр содержимого (режимы: |
|
Вывести содержимое встроенного SKILL.md для специализированного навыка (без установки) |
|
Получить элемент и дочерние элементы ( |
|
CSS-подобный запрос с булевыми |
|
Изменить свойства элемента; принимает селекторы и нативные пути Excel (паритет с |
|
Добавить элемент (или клонировать с |
|
Удалить элемент |
|
Переместить элемент ( |
|
Поменять местами два элемента |
|
Проверить соответствие схеме OpenXML |
|
|
Перечислить проблемы документа (переполнение текста, отсутствующий альтернативный текст, ошибки формул и др.) |
Несколько операций за один проход (stdin, |
|
Сериализовать |
|
Пересчитать номера страниц в оглавлении / |
|
Список / просмотр / проверка установленных плагинов (расширение на |
|
Слияние шаблонов — замена заполнителей |
|
Живой HTML-предпросмотр в браузере с автообновлением |
|
Запустить MCP-сервер для интеграции с ИИ-инструментами |
|
Просмотр сырого XML части документа |
|
Изменить сырой XML через XPath |
|
|
Добавить новую часть документа (колонтитул, диаграмму и др.) |
Запустить резидентный режим (держать документ в памяти) |
|
|
Сохранить и завершить резидентный режим |
Установить бинарный файл + навыки + MCP ( |
|
|
Получить или задать параметры конфигурации |
|
Встроенная справка (например, |
Пример сквозного рабочего процесса
Типичный самовосстанавливающийся рабочий процесс агента: создать презентацию, наполнить её содержимым, проверить и исправить проблемы — всё без участия человека.
# 1. Создать
officecli create report.pptx
# 2. Добавить содержимое
officecli add report.pptx / --type slide --prop title="Q4 Results"
officecli add report.pptx '/slide[1]' --type shape \
--prop text="Revenue: $4.2M" --prop x=2cm --prop y=5cm --prop size=28
officecli add report.pptx / --type slide --prop title="Details"
officecli add report.pptx '/slide[2]' --type shape \
--prop text="Growth driven by new markets" --prop x=2cm --prop y=5cm
# 3. Проверить
officecli view report.pptx outline
officecli validate report.pptx
# 4. Исправить найденные проблемы
officecli view report.pptx issues --json
# Устранить проблемы по результатам вывода, например:
officecli set report.pptx '/slide[1]/shape[1]' --prop font=Arial
Единицы измерения и цвета
Все свойства размеров и цветов принимают гибкие форматы ввода:
| Тип | Принимаемые форматы | Примеры |
|---|---|---|
Размеры |
cm, in, pt, px или EMU |
|
Цвета |
Hex, именованные, RGB, тема |
|
Размеры шрифта |
Число или с суффиксом pt |
|
Интервалы |
pt, cm, in или множитель |
|
Типичные шаблоны использования
# Заменить весь текст Heading1 в документе Word
officecli query report.docx "paragraph[style=Heading1]" --json | ...
officecli set report.docx /body/p[1]/r[1] --prop text="New Title"
# Экспортировать всё содержимое слайдов как JSON
officecli get deck.pptx / --depth 2 --json
# Массовое обновление ячеек Excel
officecli batch budget.xlsx --input updates.json --json
# Импорт данных CSV в лист Excel
officecli add budget.xlsx / --type sheet --prop name="Q1 Data"
officecli import budget.xlsx "/Q1 Data" sales.csv --header
# Слияние шаблонов для пакетных отчётов
officecli merge invoice-template.docx invoice-001.docx --data '{"client":"Acme","total":"$5,200"}'
# Проверка качества документа перед отправкой
officecli validate report.docx && officecli view report.docx issues --json
Из Python или Node.js — установите один из тонких SDK через резидентные каналы (без создания нового процесса на каждый вызов):
# Python — `pip install officecli-sdk`
import officecli
with officecli.create("deck.pptx") as doc: # или officecli.open("deck.pptx")
doc.send({"command": "add", "parent": "/", "type": "slide"})
print(doc.send({"command": "get", "path": "/slide[1]"}))
// Node.js — `npm install @officecli/sdk`
const oc = require("@officecli/sdk");
const doc = await oc.create("deck.pptx"); // или oc.open("deck.pptx")
await doc.send({ command: "add", parent: "/", type: "slide" });
console.log(await doc.send({ command: "get", path: "/slide[1]" }));
await doc.close();
Оба SDK автоматически устанавливают нативный CLI при его отсутствии (с приоритетом зеркала, поддержка Windows) и сообщают об установке вместо того, чтобы делать это молча.
Или оберните subprocess напрямую, однократный вызов:
import json, subprocess
def cli(*args):
return json.loads(subprocess.check_output(["officecli", *args, "--json"], text=True))
cli("create", "deck.pptx")
Документация
Вики содержит подробные руководства по каждой команде, типу элемента и свойству:
-
По формату: Word | Excel | https://github.com/iOfficeAI/OfficeCL