乐于分享
好东西不私藏

不装Office,AI自己做Word/PPT/Excel,改完还能截图自检

不装Office,AI自己做Word/PPT/Excel,改完还能截图自检

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=24

L3 是原始 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