项目卡片
项目:OfficeCLI[1] 状态:v1.x / 12K+ Star / Apache-2.0 / C# 单二进制 一句话判断:专为 AI agent 设计的 Office 套件,闭合"渲染 → 看 → 改"循环
你有没有遇到过这样的场景:
让 AI 帮你写个 PPT,它给你吐出 50 行 Python 代码,跑完发现排版全乱了。或者让它改 Excel 里的一个公式,它根本不知道当前表格长什么样。
问题的根源不是 AI 不够聪明,而是它"看不见"。

OfficeCLI 就是来解决这个问题的。它是一个 CLI 工具,让 AI agent 能直接创建、读取、编辑 Word、Excel、PowerPoint 文件——不需要安装 Office,不需要 Python 库,一个二进制文件搞定一切。
# macOS / Linux
curl -fsSL https://d.officecli.ai/install.sh | bash
# Windows (PowerShell)
irm https://d.officecli.ai/install.ps1 | iex
# 验证
officecli --version
安装完成后,officecli 会自动把自己注册到 PATH,并检测你机器上的 AI 编程助手(Claude Code、Cursor、Windsurf、GitHub Copilot),把技能文件装进去。
也就是说,装完就能在 AI 对话里直接用。
如果你用的是 Claude Code,直接粘贴这行也行:
curl -fsSL https://officecli.ai/SKILL.md
AI 会自动读取技能文件,学会所有命令。
OfficeCLI 的命令分三层。大多数时候前两层就够用了。
读取(L1)——让 AI "看见"文档:
officecli view report.docx outline # 文档大纲
officecli view report.docx html # 渲染成 HTML,浏览器实时预览
officecli view report.docx issues # 检查格式问题
view html 是核心能力。它启动本地服务器,浏览器打开就能看到高保真渲染。每执行一条修改命令,页面自动刷新。这就是让 AI 拥有"眼睛"的关键——闭合"渲染 → 看 → 改"的循环。
编辑(L2)——一行命令改文档:
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
对比 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')
50 行代码 vs 3 条命令。而且 OfficeCLI 执行后,浏览器里的预览会实时更新。
原始 XML(L3)——精细控制。当你需要原生动画、3D 模型、Morph 转场这些 L2 做不到的事时,用 raw-set 直接操作 OOXML。普通用户基本用不到。
PPT:AI 自动生图
OfficeCLI 最火的用法。告诉 AI 你想要什么,它自动创建、添加内容、设置样式、实时预览。
[Image load failed]
内置了专门的技能(load_skill),覆盖常见场景:
pitch-deck:融资 PPT,按 Seed / Series A / B / C 自动选页数和数据密度morph-ppt:Morph 动画演示morph-ppt-3d:3D 模型 + 相机运动academic-paper:学术论文(APA/Chicago/IEEE 格式)financial-model:财务模型data-dashboard:数据仪表盘
# 让 AI 帮你做一个融资 PPT
# AI 会自动调用 officecli load_skill pitch-deck
officecli create pitch.pptx
officecli add pitch.pptx / --type slide --prop title="Series A · $10M"
officecli add pitch.pptx / --type slide --prop title="The Problem"
Word:批量处理文档
假设你有一堆合同模板需要填充数据:

officecli create contract.docx
officecli add contract.docx /body --type paragraph \
--prop text="服务协议" --prop style=Heading1
officecli add contract.docx /body --type paragraph \
--prop text="甲方:XXX 公司" --prop font=宋体 --prop size=12pt
officecli set contract.docx / --find "甲方" --replace "ABC科技有限公司"
officecli add contract.docx /body --type table --prop rows=3 --prop cols=4
Word 支持:段落、表格、图片、页眉页脚、目录、批注、修订追踪、表单域、OLE 对象。特别适合 CI/CD 场景——从数据库拉数据,自动生成报告。
Excel:数据透视表一行搞定
officecli create data.xlsx
officecli set data.xlsx /Sheet1/A1 --prop text="Region"
officecli set data.xlsx /Sheet1/B1 --prop text="Sales"
officecli set data.xlsx /Sheet1/A2 --prop text="North"
officecli set data.xlsx /Sheet1/B2 --prop value=12500
# 数据透视表
officecli add data.xlsx /Sheet1 --type pivottable \
--prop source="Sheet1!A1:C100" --prop rows=Region \
--prop values="Sales:sum"
# 条件格式
officecli add data.xlsx /Sheet1 --type conditionalformatting \
--prop range="B2:B100" --prop type=colorscale \
--prop minColor=FF6B6B --prop maxColor=4ECDC4
Excel 支持:单元格、公式(350+ 内置函数)、数据透视表、切片器、条件格式、数据验证、图表、迷你图。以前用 openpyxl 创建数据透视表简直是噩梦,现在一行命令搞定。
用 OfficeCLI 之前,这几个坑一定要知道:
1. 路径要用引号括起来
# ❌ 错误:shell 会把 [1] 当成 glob
officecli get deck.pptx /slide[1]/shape[1]
# ✅ 正确:用单引号或双引号
officecli get deck.pptx '/slide[1]/shape[1]'
2. 路径是 1-based,index 是 0-based
# 路径:第 3 段落
officecli get report.docx '/body/p[3]'
# index:第 1 个位置(0-based)
officecli add report.docx /body --type paragraph --index 0
3. 不确定就用 help
# 查看所有命令
officecli help
# 查看某个元素的完整属性
officecli help docx paragraph
officecli help pptx shape
officecli help xlsx cell
# 机器可读格式
officecli help docx paragraph --json
不要猜属性名。 一次 help 查询比三次试错快得多。
4. Resident 模式自动管理内存
OfficeCLI 会自动启动 resident 进程(60 秒空闲超时),避免文件锁冲突。长时间操作建议显式 open/close:
officecli open report.docx
# ... 一系列操作 ...
officecli close report.docx
5. $ 符号要用单引号
# ❌ 错误:shell 会解析 $35M
officecli set deck.pptx '/slide[1]' --prop text="Series B · $35M"
# ✅ 正确:用单引号
officecli set deck.pptx '/slide[1]' --prop text='Series B · $35M'
一次性做很多修改,用 batch 命令:
echo '[
{"command":"set","path":"/Sheet1/A1","props":{"value":"Name","bold":"true"}},
{"command":"set","path":"/Sheet1/B1","props":{"value":"Score","bold":"true"}},
{"command":"add","path":"/body","type":"paragraph","props":{"text":"Hello"}}
]' | officecli batch data.xlsx --json
或者用 dump 导出当前文档的完整操作序列,然后 replay。这在文档迁移、模板复制、CI/CD 流水线里特别有用。
如果你更喜欢写代码,OfficeCLI 有 Python SDK:
pip install officecli-sdk
import officecli
with officecli.create("deck.pptx") as doc:
doc.batch([
{"command": "add", "path": "/", "type": "slide", "props": {"title": "Hello"}},
{"command": "set", "path": "/slide[1]", "props": {"background": "1A1A2E"}},
])
CLI 和 SDK 是等价的——同一个操作,两种方式生成的文档完全一样。
适合的场景:
AI agent 需要创建/编辑 Office 文档 批量处理文档(合同、报告、发票) CI/CD 自动生成文档(测试报告、API 文档) 需要实时预览的文档编辑 不想装 Office 但需要操作 Office 文件
不太适合的场景:
只需要读取文档内容(直接用 python-docx 就行) 需要复杂的图形设计(OfficeCLI 生成的是程序化文档,不是设计师作品) 需要实时协作编辑(这是 Google Docs 的领域)
OfficeCLI 把"AI 操作 Office 文档"这件事从"写 50 行 Python 代码"变成了"一行命令"。它的核心价值不是功能多,而是让 AI 能"看见"自己在做什么。
如果你的 AI agent 需要处理 Office文件,试试。一行安装,立刻能用。
这里会继续拆真实可用的开发者工具:少讲概念,多看入口、成本和坑点。你只需要判断一件事——它值不值得放进自己的工作流。
引用链接
[1]OfficeCLI: https://github.com/iOfficeAI/OfficeCLI
夜雨聆风