# OfficeCLI：为AI智能体设计的开源Office套件

- 来源：Hacker News 热门（buzzing.cc 中文翻译）
- 作者：maxloh
- 发布时间：2026-07-07 07:03
- AIHOT 分数：75
- AIHOT 标记：精选
- AIHOT 链接：https://aihot.virxact.com/items/cmr9u2kma003gihdb8r5drdfd
- 原文链接：https://github.com/iOfficeAI/OfficeCLI

## 精选理由

我觉得这个工具把 AI 代理操作 Office 的最后一公里走通了，特别是内置渲染引擎让代理能‘看见’文档布局，而不是盲猜 DOM，对自动化报表和批处理文档的团队很有价值。

## AI 摘要

OfficeCLI是全球首个专为AI智能体设计的开源Office套件，以单二进制文件运行，无需安装Office或任何依赖。它内置HTML渲染引擎，可将.docx/.xlsx/.pptx转换为HTML或PNG，形成“渲染→查看→修复”的视觉闭环，使AI代理能自主创建、读取和修改Word、Excel、PowerPoint文档。支持公式、图表、条件格式、RTL布局、修订追踪、表格、数据透视表等复杂功能。提供CLI命令和基于自然语言的桌面应用AionUi，并可一键安装到Claude Code、Cursor、Windsurf、GitHub Copilot等AI编码工具中。

## 正文

OfficeCLI

OfficeCLI 是全球首款也是最适配 AI 智能体的 Office 套件。

只需一行代码，即可让任意 AI 智能体完全控制 Word、Excel 和 PowerPoint。

开源。单个二进制文件。无需安装 Office。无依赖。随处运行。

OfficeCLI 内置的 HTML 渲染引擎能够高保真还原文档——这正是 AI 的"眼睛"。它可将 .docx / .xlsx / .pptx 渲染为 HTML 或 PNG，形成"渲染→查看→修正"的闭环。

English | 中文 | 日本語 | 한국어

🌐 官网：officecli.ai | 💬 社区：Discord

使用 OfficeCLI 在 AionUi 上创建 PPT 的过程

PowerPoint 演示文稿

—

Word 文档

—

Excel 电子表格

以上所有文档完全由 AI 智能体使用 OfficeCLI 创建——无模板、无人工编辑。

面向 AI 智能体——一行代码即可上手

将以下内容粘贴到 AI 智能体的对话中——它会读取技能文件并自动安装所有内容：

curl -fsSL https://officecli.ai/SKILL.md

就这样。技能文件会教会智能体如何安装二进制文件以及使用所有命令。

面向人类用户

选项 A — 图形界面：安装 AionUi——这是一款桌面应用，通过自然语言即可创建和编辑 Office 文档，底层由 OfficeCLI 驱动。只需描述你的需求，AionUi 会处理其余一切。

选项 B — CLI：从 GitHub Releases 下载对应平台的二进制文件，然后运行：

officecli install

这会将二进制文件复制到你的 PATH 中，并将 officecli 技能安装到它检测到的每一个 AI 编码智能体中——包括 Claude Code、Cursor、Windsurf、GitHub Copilot 等。你的智能体可以立即代表你创建、读取和编辑 Office 文档，无需额外配置。

面向开发者——30 秒内亲眼见证

# 1. Install (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

# 2. Create a blank PowerPoint
officecli create deck.pptx

# 3. Start live preview — opens http://localhost:26315 in your browser
officecli watch deck.pptx

# 4. Open another terminal, add a slide — watch the browser update instantly
officecli add deck.pptx / --type slide --prop title="Hello, World!"

就这样。你运行的每一个 add、set 或 remove 命令都会实时刷新预览。继续尝试——浏览器就是你的实时反馈循环。

快速开始

# Create a presentation and add content
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

# View as outline
officecli view deck.pptx outline
# → Slide 1: Q4 Report
# → Shape 1 [TextBox]: Revenue grew 25%

# View as HTML — opens a rendered preview in your browser, no server needed
officecli view deck.pptx html

# Get structured JSON for any element
officecli get deck.pptx '/slide[1]/shape[1]' --json

# Save and close — flushes the resident session to disk
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 代码和 3 个独立库才能完成的工作：

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 more lines ...
prs.save('deck.pptx')

现在只需一条命令：

officecli add deck.pptx / --type slide --prop title="Q4 Report"

OfficeCLI 能做什么：

从头创建文档——空白或带内容

读取文本、结构、样式、公式——以纯文本或结构化 JSON 形式

分析格式问题、样式不一致和结构缺陷

修改任意元素——文本、字体、颜色、布局、公式、图表、图片

重新组织内容——跨文档添加、删除、移动、复制元素

格式 读取 修改 创建

Word (.docx) ✅ ✅ ✅

Excel (.xlsx) ✅ ✅ ✅

PowerPoint (.pptx) ✅ ✅ ✅

Word — 完整的国际化与从右到左（RTL）支持（按脚本字体的字体槽、按脚本的 BCP-47 语言标签 lang.latin/ea/cs、复杂脚本的粗体/斜体/字号、通过段落/运行/节/表格/样式/页眉页脚/文档默认值级联的 direction=rtl、rtlGutter 与 pgBorders 简写、针对印地语/阿拉伯语/泰语/中日韩（CJK）的本地化页码；创建时 --locale ar-SA 自动启用 RTL）、段落（framePr、制表符简写、基于字符的缩进）、运行（underline.color、半磅单位的 position）、表格（虚拟列操作：添加/删除/移动/复制自、hMerge）、样式、文本框/形状（旋转、垂直文字 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——单元格（添加时支持拼音指南/振假名；Excel-UI：删除时左移|上移，添加时右移|下移），公式（350多个内置函数，支持自动求值；使用_xlfn.自动前缀实现动态数组溢出；财务/债券和统计函数族；OFFSET/INDIRECT；解析时将定义名称的公式体内联；在插入行/列时重写公式引用），工作表（可见/隐藏/深度隐藏，打印边距，打印标题行/列，从右到左的工作表视图，级联感知的工作表重命名，打开时过滤空单元格膨胀），布尔与或选择器（row[Salary>5000 and Region=EMEA]），表格，排序（工作表/区域，多键，侧边栏感知），条件格式，图表（包括箱线图，带自动排序和累积百分比、对数轴的帕累托图），数据透视表（多字段，日期分组，值显示方式，排序，总计，分类汇总，压缩/大纲/表格布局，重复项标签，空行，计算字段，持久标签筛选器/TopN/向下填充标签，写时复制缓存+跨透视表共享），切片器，命名区域，数据验证，图片（PNG/JPG/GIF/SVG，双表示回退），迷你图，批注（从右到左），自动筛选，形状，OLE对象，CSV/TSV导入，$Sheet:A1单元格寻址。

PowerPoint — 幻灯片（页眉/页脚/日期/幻灯片编号开关，隐藏），形状（图案填充、模糊效果、超链接工具提示 + 跳转幻灯片链接、文本运行上的高亮颜色、幻灯片母版/幻灯片版式的类型化添加/设置/删除、箭头别名、effective.X + effective.X.src），图片（PNG/JPG/GIF/SVG，填充模式：拉伸/适应/覆盖/平铺，亮度/对比度/发光/阴影，旋转，链接 + 工具提示），表格（内置 PowerPoint 样式目录，虚拟 /col[C] 获取 + 交换/copyFrom，行/列 Move/CopyFrom，填充/背景别名），图表（复合饼图、复合条饼图，按属性设置轴线/网格线，使用主题调色板添加/删除系列，简写 anchor=x,y,w,h），动画（15种强调 + 16种退出模板支持的预设，多效果链，运动路径预设，重复/重新开始/自动翻转，图表动画 + 图表构建），切换（变形 + p14 + 12种 p15 PowerPoint 2013+ 预设），3D 模型 (.glb)（组合旋转=ax,ay,az），幻灯片缩放，公式（LaTeX 输入），图表（mermaid 流程图/序列图 → 原生可编辑形状，或任何 mermaid 类型作为全保真 PNG），主题，连接符（@name= 选择器用于 from/to），视频/音频（循环、自动启动），组（链接 + 工具提示；Get/Query/Add/Remove 全部递归进入组），备注（从右到左，语言），批注（从右到左，旧式 + 新式 p188 线程化往返），SmartArt（通过 add-part + raw-set 往返），OLE 对象，占位符（按 phType 添加/设置）

使用场景

面向开发者：

从数据库或 API 自动生成报告

批量处理文档（批量查找替换、样式更新）

在 CI/CD 环境中构建文档流水线（根据测试结果生成文档）

在 Docker/容器化环境中进行无头 Office 自动化

面向 AI 智能体：

根据用户提示生成演示文稿（参见上方示例）

从文档中提取结构化数据为 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

或从 GitHub Releases 手动下载：

平台 二进制文件

macOS Apple Silicon officecli-mac-arm64

macOS Intel officecli-mac-x64

Linux x64 officecli-linux-x64

Linux ARM64 officecli-linux-arm64

Windows x64 officecli-win-x64.exe

Windows ARM64 officecli-win-arm64.exe

验证安装：officecli --version

或者从已下载的二进制文件自行安装（或直接运行 officecli 以自动安装）：

officecli install # explicit
officecli # bare invocation also triggers install

更新会在后台自动检查。可通过 officecli config autoUpdate false 禁用，或每次调用时设置 OFFICECLI_SKIP_UPDATE=1 来跳过。配置保存在 ~/.officecli/config.json 中。

关键特性

内置引擎与生成原语

OfficeCLI 是自包含的。以下功能都内置于二进制文件中——无需 Office。

渲染引擎——高保真、内置

OfficeCLI 的基石：一个从头构建的高保真 HTML 渲染引擎，让 AI 智能体能够看到渲染后的文档，而不是从 DOM 中猜测。它涵盖形状、图表（趋势线、误差线、瀑布图、蜡烛图、迷你图）、公式（OMML → 兼容 MathJax）、通过 Three.js 渲染的 3D .glb 模型、变形过渡、幻灯片缩放和形状效果。每页 PNG 截图通过将渲染后的 HTML 经无头浏览器输出生成。三种模式：

view html — 独立的 HTML 文件，资源内联。可在任何浏览器中打开。

view screenshot — 每页 PNG，可供多模态智能体读取。

watch — 本地 HTTP 服务器，支持自动刷新预览；每次添加/设置/删除操作都会立即更新浏览器。Excel 的 watch 模式支持内联单元格编辑和拖拽调整图表位置。

officecli view deck.pptx html -o /tmp/deck.html
officecli view deck.pptx screenshot -o /tmp/deck.png # add --page 1-N for more slides
officecli watch deck.pptx # http://localhost:26315

没有可视化，生成幻灯片的智能体就像在盲飞——它能读取 DOM，但无法判断标题是否溢出或两个形状是否重叠。由于渲染内置于二进制文件中，渲染→查看→修正的循环可以在 CI、Docker、无显示器的服务器上——任何能够运行该二进制文件的地方——正常工作。

公式与数据透视表引擎

350多个内置Excel函数在写入时自动求值——写入`=SUM(A1:A2)`，获取单元格，值就已经在那里了。无需通过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模式、日期分组、计算字段、Top-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将JSON数据中的`{{key}}`占位符替换到任意.docx/.xlsx/.pptx文件中——覆盖段落、表格单元格、形状、页眉、页脚和图表标题。智能体一次性设计布局（昂贵）；生产代码填充N次（廉价、确定、零token成本）。避免了智能体从头重新生成每份报告导致N个不一致布局的失败模式。

officecli merge invoice-template.docx out-001.docx '{"client":"Acme","total":"$5,200"}'
officecli merge q4-template.pptx q4-acme.pptx data.json

往返转储——从现有文档学习

dump将任意.docx、.pptx或.xlsx文件——整个文档或任意子树（单个段落、表格、幻灯片、工作表、样式部分、编号、主题或设置）——序列化为可重放的批次JSON；批次可重放。给定用户想模仿的样本后，智能体读取结构化规范（而非原始OOXML XML），进行修改并重放。衔接了“我已有现有模板”和“为我生成100个变体”的需求。

officecli dump existing.docx -o blueprint.json # whole document
officecli dump existing.docx /body/tbl[1] -o table.json # any subtree
officecli dump existing.xlsx /Sheet1 -o sheet.json # a single worksheet
officecli batch new.docx --input blueprint.json

驻留模式与批处理

对于多步骤工作流，驻留模式将文档保留在内存中。批处理模式在单次遍历中应用多个操作。

# Resident mode — near-zero latency via named pipes
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

# Batch mode — multi-command execution (continues on error by default; --stop-on-error to abort)
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

# Inline batch with --commands (no stdin needed)
officecli batch deck.pptx --commands '[{"op":"set","path":"/slide[1]/shape[1]","props":{"text":"Hi"}}]'

# Abort on the first failing command (default is continue-on-error)
officecli batch deck.pptx --input updates.json --stop-on-error --json

需要用其他工具读取文件？先刷新到磁盘。officecli自身的读取（get/query/view）始终看到您的最新编辑，因此在officecli内永不需要保存。但活跃的驻留模式会推迟磁盘写入，因此在非officecli程序读取该文件前——如python-docx/openpyxl、Microsoft Word、渲染器、交付/上传——请刷新它：

officecli set report.docx /body/p[1] --prop bold=true
officecli save report.docx # flush, keep the resident warm (or `close` to flush + release)
python my_reader.py report.docx # now sees the edit

一个常驻进程在闲置后也会自动刷新（自适应2–10秒，根据文档的测量保存成本调整）。对于另一个程序在每个命令后读取的流水线，设置OFFICECLI_RESIDENT_FLUSH=each——在命令返回之前，每个变更都已写入磁盘，同时常驻进程保持热状态。完整刷新模型（each/auto/fixed/off，save/close，环境变量调优）：wiki → open / close。

三层架构

从简单开始，仅在需要时深入。

层 目的 命令

L1：读取 内容的语义视图 view（文本、注释、大纲、统计、问题、html、svg、截图）

L2：DOM 结构化元素操作 get、query、set、add、remove、move、swap

L3：原始XML 直接XPath访问——通用后备方案 raw、raw-set、add-part、validate

# L1 — high-level views
officecli view report.docx annotated
officecli view budget.xlsx text --cols A,B,C --max-lines 50

# L2 — element-level operations
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 — raw XML when L2 isn't enough
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>'

AI集成

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 # Check registration status

将所有文档操作作为工具通过JSON-RPC暴露——无需shell访问。

直接CLI集成

两步让OfficeCLI与您的AI智能体协作：

安装二进制文件——一条命令（参见安装）

完成。OfficeCLI通过检查已知配置目录自动检测您的AI工具（Claude Code、GitHub Copilot、Codex）并安装其技能文件。您的智能体即可立即创建、读取和修改任何Office文档。

Manual setup (optional)

如果自动安装未覆盖您的配置，您可以手动安装技能文件：

直接将SKILL.md提供给您的智能体：

curl -fsSL https://officecli.ai/SKILL.md

作为本地技能为Claude Code安装：

curl -fsSL https://officecli.ai/SKILL.md -o ~/.claude/skills/officecli.md

其他智能体：将SKILL.md的内容包含在智能体的系统提示词或工具描述中。

为什么您的智能体将因OfficeCLI而蓬勃发展

确定性JSON输出——每个命令都支持--json，具有一致的架构。无需正则解析，无需抓取stdout。

基于路径的寻址——每个元素都有一个稳定路径（/slide[1]/shape[2]）。智能体无需理解XML命名空间即可导航文档。（OfficeCLI语法：基于1的索引，元素本地名称——而非XPath。）

渐进式复杂度（L1 → L2 → L3）——智能体从只读视图开始，升级到DOM操作，仅在必要时回退到原始XML。最小化token使用量。

自愈工作流——验证、查看问题，以及结构化错误代码（not_found、invalid_value、unsupported_property）会返回建议和有效取值范围。AI 智能体无需人工干预即可自行纠正。

内置的智能体友好渲染引擎——view html / view screenshot / watch 原生输出 HTML 和 PNG。无需 Office 软件。智能体可查看自己的输出并修复布局问题，即使是在 CI / Docker / 无头环境下也能工作。

内置公式与数据透视表引擎——350 多种 Excel 函数在写入时自动求值（包括动态数组溢出、金融/债券和统计函数族）；一条命令即可从源区域生成原生 OOXML 数据透视表。智能体可直接读取计算后的值和已汇总的数据，无需经过 Office 来回处理。

模板合并——智能体一次性设计好布局，下游代码填充 N 次 {{key}} 占位符。避免每次重新生成报告时浪费 token。

往返转储——dump 可将任何 .docx、.pptx 或 .xlsx 文件转换为可回放的批量 JSON。智能体通过读取结构化规格说明（而非原始 OOXML XML）从人工编写的样本中学习。

内置帮助——当智能体不确定属性名称或值格式时，运行 officecli <format> set <element> 而非猜测。

自动安装——OfficeCLI 检测你的 AI 工具（Claude Code、Cursor、VS Code 等）并自行配置。无需手动设置技能文件。

内置帮助

不要猜测属性名称——进入帮助文档：

officecli pptx set # All settable elements and properties
officecli pptx set shape # Detail for one element type
officecli pptx set shape.fill # One property: format and examples
officecli docx query # Selector reference: attributes, :contains, :has(), etc.

运行 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。属性名称会自动纠正——拼写错误的属性会返回最接近匹配的建议。

错误恢复——智能体通过检查可用元素进行自我纠正：

# Agent tries an invalid path
officecli get report.docx /body/p[99] --json
# Returns: {"success": false, "error": {"error": "...", "code": "not_found", "suggestion": "..."}}

# Agent self-corrects by checking available elements
officecli get report.docx /body --depth 1 --json
# Returns the list of available children, agent picks the right path

变更确认（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） ✗（付费许可） ✓ ✓

AI 原生 CLI + JSON ✓ ✗ ✗ ✗

零安装（单个二进制文件） ✓ ✗ ✗ ✗（Python + pip）

可从任何语言调用 ✓（CLI） ✗（COM/加载项） ✗（UNO API） 仅限 Python

基于路径的元素访问 ✓ ✗ ✗ ✗

原始 XML 回退 ✓ ✗ ✗ 部分支持

内置智能体友好渲染引擎 ✓ ✗ ✗ ✗

无头 HTML/PNG 输出 ✓ ✗ 部分支持 ✗

跨格式模板合并（{{key}}） ✓ ✗ ✗ ✗

往返转储 → 批量 JSON ✓ ✗ ✗ ✗

实时预览（编辑时自动刷新） ✓ ✗ ✗ ✗

无头 / CI ✓ ✗ 部分支持 ✓

跨平台 ✓ Windows/Mac ✓ ✓

Word + Excel + PowerPoint ✓ ✓ ✓ 独立库

命令参考

命令 描述

create 创建空白的 .docx、.xlsx 或 .pptx 文件（根据扩展名判断类型）

view 查看内容（模式：大纲、文本、注释、统计（--page-count）、问题、html、svg、截屏、pdf（通过导出器插件）、表单（通过格式处理器插件））。docx 支持 --render auto|native|html。

load_skill 打印针对专门技能的内嵌 SKILL.md 内容（无需安装）

get 获取元素及其子元素（--depth N、--json）

query 类 CSS 查询，支持布尔 and/or、按列名行查询（row[Salary>5000]）、--find 标志

set 修改元素属性；接受选择器和 Excel 原生路径（与 get/query 一致）、--find/--replace 标志

add 添加元素（或通过 --from <路径> 克隆）

remove 移除元素

move 移动元素（--to <父级>、--index N、--after <路径>、--before <路径>）

swap 交换两个元素

validate 根据 OpenXML 模式进行验证

view <文件> issues 枚举文档问题（文本溢出、缺少替代文本、公式错误……）

batch 在单次遍历中应用多个操作（stdin、--input 或 --commands；默认在出错时继续，--stop-on-error 则中止）

dump 将 .docx、.pptx 或 .xlsx 序列化为可回放（通过 batch 实现往返）的批量 JSON；可接受子树路径

refresh 重新计算目录页码 / PAGE / 交叉引用（.docx；Windows 上使用 Word 后端，无头 HTML 回退）

plugins 列出/检查/检查已安装的插件（通过转储读取器/导出器/格式处理器类型扩展到 .doc、.hwpx、.pdf 导出）

merge 模板合并——用 JSON 数据替换 {{key}} 占位符

watch 浏览器中的实时 HTML 预览，支持自动刷新

mcp 启动 MCP 服务器，用于 AI 工具集成

raw 查看文档部件的原始 XML

raw-set 通过 XPath 修改原始 XML

add-part 添加新的文档部件（页眉、图表等）

open 启动驻留模式（将文档保留在内存中）

close 保存并关闭驻留模式

install 安装二进制文件 + 技能 + MCP（所有选项：claude、cursor 等）

config 获取或设置配置

<format> <command> 内置帮助（例如：officecli pptx set shape）

端到端工作流示例

一个典型的自愈智能体工作流：创建演示文稿、填充内容、验证并修复问题——全程无需人工干预。

# 1. Create
officecli create report.pptx

# 2. Add content
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. Verify
officecli view report.pptx outline
officecli validate report.pptx

# 4. Fix any issues found
officecli view report.pptx issues --json
# Address issues based on output, e.g.:
officecli set report.pptx '/slide[1]/shape[1]' --prop font=Arial

单位与颜色

所有尺寸和颜色属性均接受灵活的输入格式：

类型 接受的格式 示例

尺寸 cm、in、pt、px 或原始 EMU 2cm、1in、72pt、96px、914400

颜色 十六进制、命名颜色、RGB、主题色 #FF0000、FF0000、red、rgb(255,0,0)、accent1

字号 纯数字或以 pt 为后缀 14、14pt、10.5pt

间距 pt、cm、in 或倍数 12pt、0.5cm、1.5x、150%

常见模式

# Replace all Heading1 text in a Word doc
officecli query report.docx "paragraph[style=Heading1]" --json | ...
officecli set report.docx /body/p[1]/r[1] --prop text="New Title"

# Export all slide content as JSON
officecli get deck.pptx / --depth 2 --json

# Bulk-update Excel cells
officecli batch budget.xlsx --input updates.json --json

# Import CSV data into an Excel sheet
officecli add budget.xlsx / --type sheet --prop name="Q1 Data" --prop csv=sales.csv

# Template merge for batch reports
officecli merge invoice-template.docx invoice-001.docx '{"client":"Acme","total":"$5,200"}'

# Check document quality before delivery
officecli validate report.docx && officecli view report.docx issues --json

从 Python 或 Node.js 使用——安装一个轻量的驻留管道 SDK（无需每次调用都启动进程）：

# Python — `pip install officecli-sdk`
from officecli import Doc
with Doc("deck.pptx") as d:
d.add("/", type="slide", title="Q4 Report")
print(d.get("/slide[1]"))

// Node.js — `npm install @officecli/sdk`
import { Doc } from "@officecli/sdk";
await using d = await Doc.open("deck.pptx");
await d.add("/", { type: "slide", title: "Q4 Report" });
console.log(await d.get("/slide[1]"));

当原生 CLI 缺失时，两个 SDK 都会自动提供（优先镜像，支持 Windows），并告知安装过程，而非静默执行。

或者直接封装子进程，一次性调用：

import json, subprocess
def cli(*args):
return json.loads(subprocess.check_output(["officecli", *args, "--json"], text=True))
cli("create", "deck.pptx")

文档

Wiki 中有每个命令、元素类型和属性的详细指南：

按格式：Word | Excel | PowerPoint

工作流：端到端示例——Word 报告、Excel 仪表盘、PowerPoint 演示文稿、批量修改、驻留模式

可运行示例：examples/——Word、Excel 和 PowerPoint 的复制粘贴脚本（.sh/.py），包含输出文件

故障排除：常见错误及解决方法

AI 智能体指南：浏览 Wiki 的决策树

从源码构建

仅需 .NET 10 SDK 进行编译。输出为自包含的本机二进制文件——.NET 已嵌入二进制文件中，运行时无需安装 .NET。

./build.sh

许可证

Apache License 2.0

欢迎在 GitHub Issues 上提交 bug 报告和贡献。

如果您觉得 OfficeCLI 有用，请在 GitHub 上给它加星——这有助于其他人发现该项目。

OfficeCLI.AI | GitHub
