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

Hacker News 热门(buzzing.cc 中文翻译)·2026-07-07 07:03·46天前·maxloh
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编码工具中。

Hacker News 热门(buzzing.cc 中文翻译)
精选
75AI 编辑部评分,满分 100

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

2026-07-07 07:03· 46天前· maxloh
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编码工具中。

推荐理由

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

正文 · AI 翻译

OfficeCLI

OfficeCLI 是全球首款且最优秀的、专为 AI 智能体设计的 Office 套件。

只需一行代码,即可让任何 AI 智能体完全掌控 Word、Excel 和 PowerPoint。

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

OfficeCLI 内置的 HTML 渲染引擎能以高保真度重现文档——这正是赋予 AI 视觉能力的关键。它能将 .docx / .xlsx / .pptx 文件渲染为 HTML 或 PNG,从而闭环实现“渲染 → 查看 → 修正”的流程。

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

🌐 网站:officecli.ai | 💬 社区:Discord

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

PowerPoint 演示文稿

Word 文档

Excel 电子表格

以上所有文档均由 AI 智能体使用 OfficeCLI 完全自主创建——无需模板,无需手动编辑。

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

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

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

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

面向人类用户

选项 A — GUI:安装 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) — 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 — 完整的国际化与从右到左支持(按文字系统的字体槽、按文字系统的 BCP-47 语言标签 lang.latin/ea/cs、复杂文字的粗体/斜体/字号、通过段落/文本块/节/表格/样式/页眉页脚/文档默认值级联的 direction=rtl、rtlGutter 与 pgBorders 简写、针对印地语/阿拉伯语/泰语/中日韩文字的区域感知页码;创建时 --locale ar-SA 自动启用从右到左),段落(framePr、制表符简写、基于字符的缩进),文本块(underline.color、以半磅为单位的 position),表格(虚拟列操作:添加/删除/移动/复制自、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界面向左或向上偏移,添加时向右或向下偏移),公式(350多个内置函数,支持自动求值,动态数组溢出时自动添加_xlfn.前缀,财务/债券及统计函数族,OFFSET/INDIRECT函数,解析时内联已定义名称的公式体,插入行/列时自动重写公式引用),工作表(可见/隐藏/深度隐藏,打印边距,打印标题行/列,从右到左工作表视图,级联感知的工作表重命名,打开时过滤空单元格膨胀),布尔与选择器(行[薪资>5000且区域=EMEA]),表格,排序(工作表/区域排序,多键排序,侧边栏感知排序),条件格式,图表(包括箱线图,带自动排序和累计百分比及对数轴的帕累托图),数据透视表(多字段,日期分组,数据显示方式,排序,总计,小计,紧凑/大纲/表格布局,重复项目标签,空行,计算字段,持久标签筛选/前N项筛选,缓存写时复制及跨透视表共享),切片器,已命名区域,数据验证,图片(PNG/JPG/GIF/SVG,支持双重表示回退),迷你图,批注(从右到左),自动筛选,形状,OLE对象,CSV/TSV导入,$工作表:A1单元格地址引用。

PowerPoint — 幻灯片(页眉/页脚/日期/幻灯片编号开关、隐藏幻灯片),形状(图案填充、模糊效果、超链接工具提示 + 跳转幻灯片链接、文本段高亮颜色、幻灯片母版/幻灯片版式的类型化添加/设置/删除、箭头别名、effective.X + effective.X.src),图片(PNG/JPG/GIF/SVG,填充模式:拉伸/适应/平铺/覆盖,亮度/对比度/发光/阴影,旋转,链接 + 工具提示),表格(内置 PowerPoint 样式目录,虚拟 /col[C] 获取 + 交换/copyFrom,行/列 Move/CopyFrom,填充/背景别名),图表(复合饼图,每属性轴线/网格线设置器,使用主题调色板添加/删除系列,锚点=x,y,w,h 简写),动画(15 种强调 + 16 种退出模板支持的预设,多效果链,运动路径预设,重复/重新启动/自动反转,图表动画 + chartBuild),切换效果(变形 + p14 + 12 种 p15 PowerPoint 2013+ 预设),3D 模型(.glb)(组合旋转=ax,ay,az),幻灯片缩放,公式(LaTeX 输入),图表(mermaid 流程图/序列图 → 原生可编辑形状,或任何 mermaid 类型作为全保真 PNG),主题,连接线(from/to 接受完整 /slide[N]/shape[@name=Foo] 路径),视频/音频(循环、自动开始),组合(链接 + 工具提示;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

或通过包管理器安装:

# 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 服务器,支持自动刷新预览;每次添加/设置/移除操作都会即时更新浏览器。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 将任意 .docx / .xlsx / .pptx 文件中的 `{{key}}` 占位符替换为 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;批量操作可重放该 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 (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,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 智能体协同工作:

  1. 安装二进制文件 —— 一条命令(参见安装说明)
  2. 完成。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`,且具有一致的架构。无需正则解析,无需抓取标准输出。
  • 基于路径的寻址 —— 每个元素都有稳定的路径(`/slide[1]/shape[2]`)。智能体无需理解 XML 命名空间即可导航文档。(OfficeCLI 语法:基于 1 的索引,元素本地名称 —— 而非 XPath。)
  • 渐进式复杂度(L1 → L2 → L3)—— 智能体从只读视图开始,升级到 DOM 操作,仅在需要时回退到原始 XML。最小化 token 使用量。
  • 自愈工作流——验证、查看问题,结构化错误码(not_found、invalid_value、unsupported_property)会返回建议和有效取值范围。智能体无需人工干预即可自行修正。
  • 内置智能体友好渲染引擎——原生支持 view html / view screenshot / watch 操作,输出 HTML 和 PNG 格式。无需安装 Office。智能体可以查看自己的输出并修复布局问题,即使在 CI / Docker / 无头环境中也能工作。
  • 内置公式与数据透视表引擎——350 多个 Excel 函数在写入时自动求值(包括溢出动态数组、金融/债券和统计函数族);通过一条命令即可从源区域生成本地 OOXML 数据透视表。智能体无需通过 Office 来回转换,即可立即读取计算值和已生成的聚合结果。
  • 模板合并——智能体一次性设计好布局,下游代码用 {{key}} 占位符填充 N 次。避免每次从头生成报告时消耗大量 token。
  • 往返转储——转储功能可将任何 .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 查看内容(模式:大纲、文本、注释、统计(--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 <path> 克隆)
remove 移除一个元素
move 移动元素(--to <parent>, --index N, --after <path>, --before <path>)
swap 交换两个元素
validate 根据 OpenXML 模式进行验证
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 列出/检查/检查已安装的插件(通过 dump-reader / exporter / format-handler 类型扩展至 .doc、.hwpx、.pdf 导出)
merge 模板合并 — 用 JSON 数据替换 {{key}} 占位符
监视 浏览器中实时 HTML 预览,支持自动刷新
mcp 启动 MCP 服务器,用于 AI 工具集成
原始 查看文档部件的原始 XML
原始设置 通过 XPath 修改原始 XML
添加部件 添加新的文档部件(页眉、图表等)
打开 启动常驻模式(将文档保留在内存中)
关闭 保存并关闭常驻模式
安装 安装二进制文件 + 技能 + MCP(全部、claude、cursor 等)
配置 获取或设置配置
帮助 <格式> <命令> 内置帮助(例如 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),并会提示安装信息,而非静默执行。

或者直接包装子进程,一次性调用:

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 已嵌入二进制文件中,运行时无需额外安装。

./build.sh

许可证

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

来源:Hacker News 热门(buzzing.cc 中文翻译)· github.com