AI Agent 写代码已经很成熟了。但让 Agent 处理 Word、Excel、PPT,一直是个麻烦事。
Office 文件本质是压缩的 XML,读问题不大,但要修改、创建、渲染,就得绕一大圈:要么装 Microsoft Office(付费、平台绑定),要么用 python-docx 这类库(只支持 Python、没有 CLI、输出不结构化)。
现在OfficeCLI 试图解决这个问题,不用装Office,不用装 WPS,让 AI Agent 直接读、写、渲染 Word、Excel、PPT。


安装
# macOS / Linuxcurl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash# Windows (PowerShell)irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex装完之后,工具会自动扫一下本机装了哪些 AI 编程工具(Claude Code、Cursor、VS Code Copilot 等),把使用说明写进对应的配置目录,不需要手动配置,装完 Agent 就能直接调用。
注:如果安装中出现问题,可以把问题发给AI解决。
核心能力
· · · 读写改能力· · ·
这个项目设计上分三层,从简单到复杂。
L1 是读和检查,直接拿结果:
officecli view report.docx text # 提取纯文本officecli view deck.pptx outline # 查看幻灯片结构officecli view budget.xlsx issues --json # 检查格式和公式错误L2 是 DOM 操作,通过路径精确定位、修改元素:
officecli set report.docx /body/p[1]/r[1] --prop text="新标题" --prop bold=trueofficecli add deck.pptx / --type slide --prop title="Q4 结果"officecli add deck.pptx '/slide[1]' --type shape \ --prop text="营收增长 25%" --prop x=2cm --prop y=5cm --prop size=24L3 是原始 XML,用 XPath 直接操作,基本上没有做不到的事:
officecli raw-set report.docx document \ --xpath "//w:p[1]" --action append \ --xml '<w:r><w:t>插入文字</w:t></w:r>'路径从 1 开始计数,/slide[1] 就是第一张幻灯片。所有修改命令加 --json 返回结构化结果,出错了也会给错误码和修正建议,不是光甩一段报错文字。
· · · 内置渲染引擎· · ·
这块是 OfficeCLI 比同类工具多出来的东西。
以前 Agent 改完文档,没办法知道视觉上长什么样,只能靠 DOM 结构猜。现在改完可以直接渲染:
officecli view deck.pptx html -o /tmp/deck.html # 渲染成 HTMLofficecli view deck.pptx screenshot -o /tmp/1.png # 截图officecli watch deck.pptx # 本地预览,http://localhost:26315# 每次改动浏览器自动刷新watch 模式用起来很顺手:终端里改命令,浏览器同步刷新,全程不用开 Office。
截图功能对多模态 Agent 更有用:改完幻灯片截一张图,让 Agent 自己看标题有没有溢出、排版有没有乱,确认没问题再继续。
· · · 内置公式引擎· · ·
写入 Excel 公式时自动计算,不需要打开 Excel 重算:
officecli set budget.xlsx /Sheet1/A1 --prop formula="=SUM(B1:B10)"officecli get budget.xlsx /Sheet1/A1 --json# 返回的 value 已经是计算结果,不是公式字符串FILTER、UNIQUE、SORT、SEQUENCE 这些动态数组函数也支持,会自动处理兼容性前缀。
· · · 模板合并· · ·
做一次模板,批量填充,三种格式都支持:
officecli merge invoice-template.docx invoice-001.docx --data '{"client":"Acme","total":"5200"}'officecli merge q4-template.pptx q4-acme.pptx --data data.json模板里用 {{key}} 占位,段落、表格、形状、页眉页脚、图表标题都能替换。
好处是布局只让 Agent 生成一次,后续批量填充不需要 Agent 再参与,不管填多少份成本都一样。
· · · round-trip dump· · ·
把现有文档的结构完整导出成 JSON,再用 batch 命令重放:
officecli dump existing.docx -o blueprint.json # 整个文档officecli dump existing.docx /body/tbl[1] -o tbl.json # 只导出某个表格officecli batch new.docx --input blueprint.json # 重放,生成新文档实际用起来是这样:客户发来一份他们内部的模板,Agent 用 dump 把结构读出来,搞清楚格式规范,然后按这个框架生成新内容,不用从头猜 XML 怎么写。
· · · MCP Server· · ·
一行注册到 AI 工具:
officecli mcp claude # Claude Codeofficecli mcp cursor # Cursorofficecli mcp vscode # VS Code / Copilot注册之后,Agent 通过 MCP 调用文档操作,不需要 shell 权限。
几个实际场景
· · · 批量生成报告· · ·
律所每个月要给每个客户发一份案件进展报告,格式固定,只有案件信息不同。
做法很直接:人工做一份标准模板,里面用 {{client_name}}、{{case_status}}、{{next_steps}} 占位;
从案件管理系统导出数据,每个案件一条 JSON;脚本循环调用 officecli merge,每个客户生成一份 docx;
最后用 officecli validate 跑一遍检查。
整个过程不需要开 Word,AI 也不需要参与每一份报告的生成。
· · · AI 生成 PPT· · ·
给 Agent 一段产品介绍,让它生成一份 PPT:
officecli create pitch.pptxofficecli add pitch.pptx / --type slide \ --prop title="产品介绍" --prop background=1A2B4Cofficecli add pitch.pptx '/slide[1]' --type shape \ --prop text="解决中小企业文档自动化问题" \ --prop x=2cm --prop y=5cm --prop size=28 --prop color=FFFFFF# 截图确认officecli view pitch.pptx screenshot -o check.png# Agent 看图,标题溢出就调字号,再截图确认有截图反馈,Agent 不是在盲改,出了排版问题能自己发现、自己修。
· · · 数据报表自动化· · ·
每周拉销售数据,生成 Excel 报表:
officecli create weekly.xlsxofficecli set weekly.xlsx /Sheet1/A1 --prop value="区域" --prop bold=trueofficecli set weekly.xlsx /Sheet1/B1 --prop value="销售额" --prop bold=trueofficecli batch weekly.xlsx --input updates.json --jsonofficecli set weekly.xlsx /Sheet1/B20 --prop formula="=SUM(B2:B19)"officecli add weekly.xlsx '/Sheet1' --type pivottable \ --prop source='Sheet1!A1:C19' \ --prop rows='区域' \ --prop values='销售额:sum'公式写入时自动算好,Excel 打开就是完整的报表,不用手动刷新。
项目局限
功能覆盖面挺广,但项目比较新,边缘场景还是会碰到 bug,遇到可以去 GitHub Issues 提,回应速度还不错。
Python SDK 目前是对 CLI 的薄封装,不是原生库,性能有上限。
渲染引擎对复杂排版(多栏、特殊字体、OLE 对象)还原精度有限,用来做 Agent 的视觉确认够用,像素级校对就力不从心了。
跟同类工具的区别
· · · LibreOffice· · ·
LibreOffice 有无头模式,主要能做的是格式转换:
libreoffice --headless --convert-to pdf report.docx把文件从一种格式转成另一种,这个够用。但它没有结构化读写接口,Agent 没法问它"第三张幻灯片的标题是什么",也没法让它"把 B5 单元格改成 100"。
社区有人做了 MCP Server 封装,但能力还是局限在格式转换上。
拿来做 docx 转 pdf 的管道没问题,要做 Agent 文档操作就不够用了。
· · · 飞书 CLI· · ·
飞书官方出品的 CLI 工具,能让 Agent 读飞书文档、操作多维表格等。
但操作对象是飞书平台,不是本地 Office 文件。
项目地址:https://github.com/iOfficeAI/OfficeCLI
夜雨聆风