OfficeCLI:为AI智能体设计的开源Office套件
OfficeCLI:供人工智能代理读取和编辑 Microsoft Office 文件的办公套件
OfficeCLI是全球首个专为AI智能体设计的开源Office套件,以单二进制文件运行,无需安装Office或任何依赖。它内置HTML渲染引擎,可将.docx/.xlsx/.pptx转换为HTML或PNG,形成“渲染→查看→修复”的视觉闭环,使AI代理能自主创建、读取和修改Word、Excel、PowerPoint文档。支持公式、图表、条件格式、RTL布局、修订追踪、表格、数据透视表等复杂功能。提供CLI命令和基于自然语言的桌面应用AionUi,并可一键安装到Claude Code、Cursor、Windsurf、GitHub Copilot等AI编码工具中。
我觉得这个工具把 AI 代理操作 Office 的最后一公里走通了,特别是内置渲染引擎让代理能‘看见’文档布局,而不是盲猜 DOM,对自动化报表和批处理文档的团队很有价值。
OfficeCLI
OfficeCLI 是全球首个、也是最出色的专为 AI 智能体设计的 Office 套件。
只需一行代码,即可让任何 AI 智能体完全掌控 Word、Excel 和 PowerPoint。
开源。单一二进制文件。无需安装 Office。无依赖。随处可用。
OfficeCLI 内置的 HTML 渲染引擎能够高保真地还原文档——这正是赋予 AI 视觉能力的关键。 它可将 .docx / .xlsx / .pptx 渲染为 HTML 或 PNG,从而闭合 渲染 → 查看 → 修复 的循环。
🌐 网站: officecli.ai | 💬 社区: Discord
在 AionUi 上使用 OfficeCLI 制作 PPT 的过程
PowerPoint 演示文稿
Word 文档
Excel 电子表格
以上所有文档均由 AI 智能体使用 OfficeCLI 完全创建——没有模板,没有手动编辑。
面向 AI 智能体——一行命令即可上手
将以下内容粘贴到你的 AI 智能体对话中——它会读取技能文件并自动安装所有内容:
curl -fsSL https://officecli.ai/SKILL.md
就这样。该技能文件会教智能体如何安装二进制文件并使用所有命令。
面向人类
选项 A——图形界面: 安装 AionUi——一款桌面应用,让你通过自然语言创建和编辑 Office 文档,底层由 OfficeCLI 驱动。只需描述你想要的内容,AionUi 会处理其余的一切。
选项 B——命令行: 从 GitHub Releases 下载适用于你平台的二进制文件,然后运行:
officecli install
这会将二进制文件复制到你的 PATH 中,并将 officecli 技能安装到它检测到的每一个 AI 编程智能体中——Claude Code、Cursor、Windsurf、GitHub Copilot 等等。你的智能体可以立即代表你创建、读取和编辑 Office 文档,无需额外配置。
面向开发者——30 秒内亲眼见证
# 1. Install (macOS / Linux) — or: 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. 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 — 完整的 i18n 与 RTL 支持(按文字系统分配字体槽位、按文字系统设置 BCP-47 语言标签 lang.latin/ea/cs、复杂文字系统的粗体/斜体/字号、direction=rtl 级联贯穿段落/文本运行/节/表格/样式/页眉/页脚/docDefaults、rtlGutter + pgBorders 简写、面向印地语/阿拉伯语/泰语/CJK 的本地化页码;create --locale ar-SA 自动启用 RTL)、段落(framePr、制表符简写、基于字符的缩进)、文本运行(下划线颜色、位置半磅值)、表格(虚拟列操作 add/remove/move/copyfrom、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 — 单元格(添加时显示注音指南 / 假名,删除时显示 Excel-UI --shift left\|up,添加时显示 shift=right\|down)、公式(350+ 内置函数并自动求值,溢出动态数组自动加 _xlfn. 前缀,财务 / 债券和统计函数族,OFFSET/INDIRECT,解析时将定义名称的公式主体内联,插入行/列时重写公式引用)、工作表(可见/隐藏/深度隐藏,打印边距,printTitleRows/Cols,RTL sheetView,级联感知的工作表重命名,打开时的空单元格膨胀过滤)、布尔 and/or 选择器(row[Salary>5000 and Region=EMEA])、表格、排序(工作表 / 区域,多键,sidecar 感知)、条件格式、图表(包括箱线图、帕累托图并自动排序 + 累计百分比、对数轴)、数据透视表(多字段、日期分组、showDataAs、排序、总计、小计、紧凑/大纲/表格布局、重复项目标签、空行、计算字段、持久化 labelFilter / topN 筛选器、缓存 CoW + 跨透视表共享)、切片器、命名区域、数据验证、图片(PNG/JPG/GIF/SVG 并带双表示回退)、迷你图、批注(RTL)、自动筛选、形状、OLE 对象、CSV/TSV 导入、$Sheet:A1 单元格寻址
PowerPoint — 幻灯片(页眉/页脚/日期/页码开关、隐藏),形状(图案填充、模糊效果、超链接工具提示 + 幻灯片跳转链接、文本段上的高亮颜色、slideMaster/slideLayout 类型化的 add/set/remove、箭头别名、effective.X + effective.X.src),图片(PNG/JPG/GIF/SVG,填充模式:拉伸/包含/覆盖/平铺,亮度/对比度/发光/阴影,旋转,链接 + 工具提示),表格(内置 PowerPoint 样式目录、虚拟 /col[C] get + swap/copyFrom、行/列 Move/CopyFrom、填充/背景别名),图表(pieOfPie、barOfPie、按属性设置 axisLine/gridline、使用主题调色板添加/删除系列、anchor=x,y,w,h 简写),动画(15 种强调 + 16 种退出模板化预设、多效果链、运动路径预设、重复/重新开始/自动反转、图表动画 + chartBuild),切换(morph + p14 + 12 种 p15 PowerPoint 2013+ 预设),3D 模型(.glb)(组合 rotation=ax,ay,az),幻灯片缩放,公式(LaTeX 输入),图表(mermaid 流程图/时序图 → 原生可编辑形状,或任意 mermaid 类型作为高保真 PNG),主题,连接线(from/to 接受完整的 /slide[N]/shape[@name=Foo] 路径),视频/音频(循环、自动开始),分组(链接 + 工具提示;Get/Query/Add/Remove 都会深入各组),备注(RTL、lang),批注(RTL、旧版 + 新版 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
或通过包管理器:
# Homebrew (macOS / Linux)
brew install officecli
# Scoop (Windows)
scoop install officecli
# npm (all platforms — fetches the native binary for your platform)
npm install -g @officecli/officecli
或手动下载,来自 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 去猜测。它涵盖形状、图表(趋势线、误差线、瀑布图、K 线图、迷你图)、公式(OMML → LaTeX,用 KaTeX 渲染)、通过 Three.js 实现的 3D .glb 模型、变形过渡、幻灯片缩放以及形状效果。逐页 PNG 截图通过将渲染后的 HTML 管道传输到无头浏览器来生成。三种模式:
view html— 独立的 HTML 文件,资源全部内联。可在任何浏览器中打开。view screenshot— 逐页 PNG,可供多模态智能体直接读取。watch— 本地 HTTP 服务器,带自动刷新预览;每次add/set/remove更新都会即时刷新浏览器。Excel 监听支持单元格内联编辑和拖拽重新定位图表。
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),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 模式、日期分组、计算字段、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替换{{key}}任意位置中的占位符.docx / .xlsx / .pptx用 JSON 数据填充——跨段落、表格单元格、形状、页眉、页脚和图表标题。智能体只需设计一次布局(成本高);生产代码填充 N 次(成本低、确定性、零 token 成本)。避免了智能体每次从零重新生成每份报告、从而产生 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
往返转储——从现有文档中学习
dump 可将任意 .docx、.pptx 或 .xlsx —— 整个文档 或任意子树(单个段落、表格、幻灯片、工作表、样式部分、编号、主题或设置)—— 序列化为可重放的批量 JSON;batch 负责重放。给定一个用户想要模仿的样本,智能体读取结构化规范而非原始 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 (atomic by default: any failed item rolls back the whole batch)
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"}}]'
# Keep whatever succeeds even if some items fail (pre-1.0.137 behavior)
officecli batch deck.pptx --input updates.json --best-effort --json
# Stop at the first failing command instead of running the rest (still rolls back everything unless combined with --best-effort)
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,保存 / 关闭,环境变量调优):wiki → open / close。
三层架构
从简单开始,只在需要时深入。
| 层级 | 用途 | 命令 |
|---|---|---|
| L1:读取 | 内容的语义视图 | view(text、annotated、outline、stats、issues、html、svg、screenshot) |
| 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 Server
内置 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 文档。
手动设置(可选)
如果自动安装未覆盖你的环境,你可以手动安装技能文件:
将 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,schema 保持一致。无需正则解析,无需抓取 stdout。 - 基于路径的寻址 —— 每个元素都有稳定的路径(
/slide[1]/shape[2])。智能体无需理解 XML 命名空间即可浏览文档。(OfficeCLI 语法:从 1 开始索引,使用元素本地名称 —— 不是 XPath。) - 渐进式复杂度(L1 → L2 → L3) —— 智能体从只读视图开始,逐步升级到 DOM 操作,仅在需要时才回退到原始 XML。最大限度减少 token 消耗。
- 自愈式工作流 ——
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 次。避免为从头重新生成每份报告而消耗 token。 - 往返转储 —
dump可将任意.docx、.pptx或.xlsx转换为可重放的批量 JSON。智能体通过读取结构化规范而非原始 OOXML XML,从人工编写的样本中学习。 - 内置帮助 — 当不确定属性名称或值格式时,智能体会运行
officecli <format> set <element>,而不是靠猜测。 - 自动安装 — OfficeCLI 会检测你的 AI 工具(Claude Code、Cursor、VS Code 等)并自行完成配置。无需手动设置技能文件。
内置帮助
不要猜测属性名称——深入查看帮助:
officecli help pptx set # All settable elements and properties
officecli help pptx set shape # Detail for one element type
officecli help 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 | 查看内容(模式:outline、text、annotated、stats(--page-count)、issues、html、svg、screenshot、pdf(通过 exporter 插件)、forms(通过 format-handler 插件))。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 <path> 克隆) |
remove | 移除一个元素 |
move | 移动元素(--to <parent>、--index N、--after <path>、--before <path>) |
swap | 交换两个元素 |
validate | 根据 OpenXML schema 进行校验 |
view <file> issues | 枚举文档问题(文本溢出、缺少替代文本、公式错误等) |
batch | 在单次执行中应用多个操作(stdin、--input 或 --commands;默认原子性——任何失败项都会回滚整个批次——--best-effort 可保留部分进度,--stop-on-error 可提前中止) |
dump | 将 .docx、.pptx 或 .xlsx 序列化为可重放的批量 JSON(通过 batch 往返);接受子树路径 |
refresh | 重新计算目录页码 / PAGE / 交叉引用(.docx;Windows 上使用 Word 后端,无头 HTML 回退) |
plugins | 列出 / 检查 / lint 已安装的插件(扩展至 .doc、.hwpx、.pdf,通过 dump-reader / exporter / format-handler 类型导出) |
merge | 模板合并——用 JSON 数据替换 {{key}} 占位符 |
watch | 在浏览器中实时 HTML 预览,支持自动刷新 |
mcp | 启动 MCP 服务器以集成 AI 工具 |
raw | 查看文档部件的原始 XML |
raw-set | 通过 XPath 修改原始 XML |
add-part | 添加新的文档部件(页眉、图表等) |
open | 启动常驻模式(将文档保留在内存中) |
close | 保存并关闭常驻模式 |
install | 安装二进制文件 + 技能 + MCP(all、claude、cursor 等) |
config | 获取或设置配置 |
help <format> <command> | 内置帮助(例如 officecli help 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"
officecli import budget.xlsx "/Q1 Data" sales.csv --header
# Template merge for batch reports
officecli merge invoice-template.docx invoice-001.docx --data '{"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]"));
这两个 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")
文档
Wiki 中针对每条命令、每种元素类型和每个属性都有详细指南:
- 按格式: Word | Excel | PowerPoint
- 工作流: 端到端示例——Word 报告、Excel 仪表盘、PowerPoint 演示文稿、批量修改、常驻模式
- 可运行示例: examples/ —— 可直接复制粘贴的脚本(.sh/.py),用于 Word、Excel 和 PowerPoint,并附带输出文件
- 故障排查: 常见错误与解决方案
- AI 智能体指南: 用于浏览本 wiki 的决策树
从源码构建
仅在编译时需要 .NET 10 SDK。输出的是一个自包含的原生二进制文件 —— .NET 已嵌入该二进制文件中,运行时无需安装。
./build.sh
许可证
欢迎在 GitHub Issues 上提交 bug 报告和贡献。
来源:Hacker News 热门(buzzing.cc 中文翻译) · github.com