OfficeCLI(官网 officecli.ai)是一个让 AI 智能体直接操作 Office 文档的开源命令行工具:单一二进制文件覆盖 Word/Excel/PPT 的读取、修改、创建、渲染、合并,每个命令都能输出 AI 友好的 JSON,天然适配智能体与自动化流水线。Apache 2.0 开源,自包含 .NET 运行时,零依赖安装。
设计理念:分层渐进式复杂度
区别于 python-docx / openpyxl / LibreOffice 等传统方案,OfficeCLI 按「智能体先看懂、再修改、最后才碰底层」的思路设计为三层抽象:
| 层 | 用途 | 典型命令 | 适用者 |
|---|---|---|---|
| L1 视图层 | 内容语义化读取 | view text / view html / view screenshot / view stats |
AI 先「看懂」文档 |
| L2 DOM 层 | 结构化元素操作 | get / query / set / add / remove / move |
智能体或开发者编排修改 |
| L3 原始 XML 层 | XPath 直接访问,通用兜底 | raw / raw-set / add-part |
极端边缘场景 |
元素寻址基于稳定路径(如 /slide[1]/shape[2]),支持类 CSS 选择器查询:
officecli pptx query "/slide[*]/shape[@name contains 'logo']"
officecli docx query "/body/table/cell:contains('Q4')"
officecli xlsx query "/sheet[1]/cell[@value > 100]"
四大核心引擎
渲染引擎(让 AI「看见」文档)
多模态模型查看 PPT 的传统流程是「打开 PowerPoint → 导出 PNG → 喂给模型」,OfficeCLI 把渲染做进二进制里:
officecli pptx view html presentation.pptx # 独立 HTML,资源内联
officecli pptx view screenshot presentation.pptx # 按页输出 PNG
officecli pptx watch presentation.pptx # 本地 HTTP 服务 + 自动刷新
覆盖形状、图表(趋势线/误差线/瀑布图/K 线图)、公式(OMML→MathJax 兼容转换)、3D 模型(.glb 经 Three.js)、morph 过渡与幻灯片缩放效果。
Excel 公式引擎与透视表
内置公式求值引擎,覆盖动态数组函数(FILTER / UNIQUE / SORT / SEQUENCE)、VLOOKUP、INDEX/MATCH、日期/文本函数等上百种,写入公式即自动求值,无需打开 Excel。OOXML 中动态数组函数的 _xlfn. 前缀自动处理:
officecli xlsx set "/sheet[1]/cell[A1]" --value "=VLOOKUP(D2, $B$2:$F$100, 3, FALSE)"
一条命令生成原生 OOXML 数据透视表,支持多字段、日期分组、showDataAs、排序、总计、分类汇总、计算字段:
officecli xlsx add "/sheet[1]" --type pivotTable \
--source "$A$1:$G$200" --row "月份" --col "品类" --value "销售额" --value "利润"
模板合并(设计一次,批量生产)
AI 智能体设计一次 Office 版式(排版、配色、图表、样式),再以零 token 消耗的确定性操作批量生成变体:
# 模板中写 {{客户名}}、{{季度}}、{{营收}} 等占位符
officecli merge template.docx data.json --output report.docx
支持段落、表格单元格、形状文本、页眉页脚、图表标题中的占位符替换。
Dump 往返(让智能体学习现有排版)
导出整个文档为可重放的 batch JSON,智能体分析结构、修改后重放,即可批量生成相似变体:
officecli docx dump template.docx --output batch.json # 导出结构
officecli docx batch batch.json --output variant.docx # 修改后重放
三种格式覆盖亮点
- Word:完整公式(OMML→MathJax)兼容、修订/追踪变更、内容控件 SDT、RTL/i18n 支持
- Excel:公式求值引擎、数据透视表完整支持、丰富图表(箱线图/帕累托/对数轴)
- PowerPoint:动画(15 种强调 + 16 种退出 + morph + 运动路径)、3D 模型、视频/音频、SmartArt 往返支持
AI 原生设计
- 确定性 JSON 输出:每个命令支持
--json,schema 一致,对 LLM function calling 友好 - 结构化错误码:
not_found、invalid_value等可编程错误码,属性名自动纠错,智能体可自愈式处理失败 - 内置自检:
officecli docx validate report.docx验证文档结构,officecli docx view issues report.docx列出潜在问题 - MCP 一键注册:
officecli install自动检测并配置,或officecli mcp register claude指定注册,直接接入 Claude Code / Cursor / VS Code / LM Studio
安装与上手
# macOS / Linux
curl -fsSL https://officecli.ai/install.sh | bash
# Windows (PowerShell)
iwr -useb https://officecli.ai/install.ps1 | iex
自包含二进制,内嵌 .NET 运行时,支持 macOS (x64/ARM64)、Linux (x64/ARM64)、Windows (x64)。
officecli create docx myfile.docx # 创建空白文档
officecli pptx add "/slide[1]" --type titleSlide --title "我的演示" --subtitle "自动生成的"
officecli pptx view html slides.pptx --output preview.html # 查看效果
典型应用场景
- CI/CD 自动生成测试报告:预先用 AI 设计测试报告模板(含 logo、排版、图表占位符),CI 流水线中
officecli merge template.docx test_results.json一行命令替代几百行 Python 报告脚本 - 数据库导出 Excel 周报:SQL 导出为 JSON →
officecli merge weekly_report.xlsx data.json,模板中的公式和透视表一并保留 - AI 智能体按自然语言生成 PPT:create → 逐页 add 标题/内容/图表 →
view screenshot检查 → 微调排版 → 交付,全程无需打开 PowerPoint
对比主流方案
| 特性 | OfficeCLI | MS Office | LibreOffice | python-docx/openpyxl |
|---|---|---|---|---|
| 开源免费 | ✅ Apache 2.0 | ❌ 付费 | ✅ | ✅ |
| 单一二进制零依赖 | ✅ | ❌ | ❌ 需完整安装 | ❌ 需 Python+pip |
| CLI 统一接口(语言无关) | ✅ | ❌ | ❌ | 仅 Python |
| AI 原生 JSON 输出 | ✅ | ❌ | ❌ | ❌ |
| 基于路径元素访问 | ✅ | ❌ | ❌ | ❌ |
| 内置渲染引擎 | ✅ | ❌ | ❌ | ❌ |
| 无头 HTML/PNG 输出 | ✅ | ❌ | 部分 | ❌ |
| 跨格式模板合并 | ✅ | ❌ | ❌ | ❌ |
| Dump→batch JSON 往返 | ✅ | ❌ | ❌ | ❌ |
| 三种格式全覆盖 | ✅ | ✅ | ✅ | 需多个库 |
局限性
- 目前仅支持 OOXML 格式(.docx / .xlsx / .pptx),旧版 .doc / .xls 需先通过其他工具转换
- CLI 操作方式对不熟悉命令行的用户有学习门槛
- 错误提示的友好程度还有提升空间
原文:小华同学ai 公众号《我解放啦,彻底起飞!!!OfficeCLI开源,openclaw 直接操作 word、ppt、excel,太丝滑》