OfficeCLI实战:3条命令批量生成500份Word合同,零Office依赖
一、你有没有被"手动改合同"逼疯过?
假设你是一家公司的行政,领导丢来一句:"把这个合同模板填500份,客户名字和金额都在Excel里。"
你打开Word,复制粘贴,改名字,改金额,保存……半小时过去了,才做了不到20份。手抖、眼花、文件名还打错了一个。
传统解决思路是写Python脚本,用 python-docx 库逐字段替换——代码写了一百行,调试半天,还经常因为格式丢失返工。
有没有一条命令就能搞定的事?
有。这就是今天的主角——GitHub 12K Star 的开源神器 OfficeCLI。

图:OfficeCLI 项目首页——全球首个专为 AI Agent 设计的 Office 命令行套件
二、OfficeCLI 是什么?
一句话定义:
**零依赖、单文件、跨平台的 Office 命令行工具——无需安装 Word/Excel/PowerPoint,就能创建、读取、修改 .docx / .xlsx / .pptx 文件。**
核心数据一览:
| 维度 | 说明 |
|------|------|
| 技术栈 | C# / .NET,内嵌运行时 |
| 包体积 | 单二进制文件,约 50MB |
| 平台 | Windows / macOS / Linux |
| 依赖 | 零——不需要装 Office |
| 协议 | Apache 2.0 开源 |
| Stars | 12,200+(2026年7月) |
为什么它能火? 因为它解决了两个致命痛点:
- **传统方案太重**:`python-docx` 需要 Python 环境 + 各种依赖,部署成本高;
- **AI Agent 的"眼睛"问题**:AI 生成文档后,没法"看到"实际排版效果。OfficeCLI 内置 HTML 渲染引擎,能将文档渲染成 HTML/PNG,让 AI 像人一样"审视"自己的输出。

图:OfficeCLI 三层架构——L1 读取层 → L2 DOM 操作层 → L3 原始 XML 层
三、第一步:安装 OfficeCLI(1分钟搞定)
三种安装方式,选你喜欢的。
方式一:直接下载二进制(推荐)
Windows 用户打开 PowerShell:
# 下载最新版(Windows x64)
Invoke-WebRequest -Uri "https://github.com/iOfficeAI/OfficeCLI/releases/latest/download/officecli-win-x64.zip" -OutFile "officecli.zip"
Expand-Archive officecli.zip -DestinationPath "C:\officecli"
# 加入环境变量(可选,方便全局调用)
[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\officecli", "User")
macOS / Linux 用户:
# macOS (Apple Silicon)
curl -L -o officecli.zip https://github.com/iOfficeAI/OfficeCLI/releases/latest/download/officecli-osx-arm64.zip
unzip officecli.zip -d /usr/local/bin/
chmod +x /usr/local/bin/officecli
# Linux x64
curl -L -o officecli.tar.gz https://github.com/iOfficeAI/OfficeCLI/releases/latest/download/officecli-linux-x64.tar.gz
tar -xzf officecli.tar.gz -C /usr/local/bin/
chmod +x /usr/local/bin/officecli
方式二:.NET 工具安装
dotnet tool install --global OfficeCLI
方式三:Docker
docker pull iofficeai/officecli:latest
docker run --rm -v $(pwd):/data iofficeai/officecli create /data/output.docx
安装完成后验证:
officecli --version
# 输出:v1.0.125
✅ 到此安装完毕,全程不超过 1 分钟。
四、第二步:用命令行创建你的第一份 Word 文档
先来个"Hello World"热热身。
4.1 创建空白文档
# 创建一份空白 docx
officecli create my-first.docx
运行结果:
Created: my-first.docx (empty document, 12.4 KB)
就这么简单,一个 .docx 文件诞生了。不需要安装 Microsoft Office,不需要任何依赖。
4.2 写入标题和正文
接下来往文档里加点内容。OfficeCLI 使用 路径式元素定位(类似 XPath),通过 /body/p[1] 这样的路径精确操作文档元素:
# 添加标题段落
officecli add my-first.docx /body \
--type paragraph \
--prop style="Heading1" \
--text "2026年度合同签约确认书"
# 添加正文段落
officecli add my-first.docx /body \
--type paragraph \
--prop style="Normal" \
--text "甲方:星辰科技有限公司"
officecli add my-first.docx /body \
--type paragraph \
--prop style="Normal" \
--text "乙方:__________________(客户名称)"
# 插入表格
officecli add my-first.docx /body \
--type table \
--rows 3 --cols 3 \
--data '[["项目","单价(元)","数量"],["软件开发","50,000","1"],["运维服务","12,000","12"]]'
4.3 查看文档效果
关键在于:你能在终端里直接预览文档!
# 将文档渲染为 HTML,在浏览器中查看
officecli render my-first.docx --format html --output preview.html
# 或者直接渲染为 PNG 截图
officecli render my-first.docx --format png --output preview.png
# 实时监听模式:修改文档后浏览器自动刷新
officecli watch my-first.docx

图:OfficeCLI 终端操作效果——创建、编辑、预览一气呵成
这就是 OfficeCLI 的核心优势:你能"看见"文档排版,而不是像 python-docx 那样盲写代码后打开才发现格式全乱了。
五、第三步:模板 + JSON 批量生成500份合同
进入正题——这才是 OfficeCLI 的杀手锏。
5.1 准备模板文件
先用 Word 或 OfficeCLI 制作一份模板 contract-template.docx,在需要填充的位置写入占位符:
{{client_name}} ← 客户名称
{{contract_amount}} ← 合同金额
{{sign_date}} ← 签约日期
模板内容示例:
**项目外包合同**
>
甲方:星辰科技有限公司
乙方:**{{client_name}}**
合同金额:人民币 **{{contract_amount}}** 元
签约日期:**{{sign_date}}**
5.2 准备数据文件
创建一个 clients.json:
[
{"client_name": "北京云创科技", "contract_amount": "¥85,000", "sign_date": "2026-07-15"},
{"client_name": "上海数联信息", "contract_amount": "¥120,000", "sign_date": "2026-07-16"},
{"client_name": "深圳智源网络", "contract_amount": "¥67,500", "sign_date": "2026-07-17"}
]
5.3 一条命令批量生成
核心命令来了:
# 单份生成
officecli merge contract-template.docx output-001.docx \
'{"client_name":"北京云创科技","contract_amount":"¥85,000","sign_date":"2026-07-15"}'
运行结果:
Merged: contract-template.docx → output-001.docx
Replaced 3 placeholders
Output size: 28.4 KB
批量生成500份: 写一个简单的 Shell 脚本:
#!/bin/bash
# batch_generate.sh — 从 JSON 数据批量生成 Word 合同
DATA_FILE="clients.json"
TEMPLATE="contract-template.docx"
OUTPUT_DIR="./output"
mkdir -p "$OUTPUT_DIR"
# 读取 JSON 数组长度
COUNT=$(cat "$DATA_FILE" | python3 -c "import sys,json; print(len(json.load(sys.stdin)))")
echo "共 $COUNT 条记录,开始批量生成..."
for i in $(seq 0 $((COUNT - 1))); do
# 提取第 i 条 JSON 对象
ROW=$(cat "$DATA_FILE" | python3 -c "import sys,json; print(json.dumps(json.load(sys.stdin)[$i]))")
# 提取客户名用于文件名
CLIENT=$(echo "$ROW" | python3 -c "import sys,json; print(json.load(sys.stdin)['client_name'])")
# 生成文件名(替换特殊字符)
SAFE_NAME=$(echo "$CLIENT" | sed 's/[\/:*?"<>|]/-/g')
echo "[$((i+1))/$COUNT] 生成: $SAFE_NAME.docx"
officecli merge "$TEMPLATE" "$OUTPUT_DIR/${SAFE_NAME}.docx" "$ROW"
done
echo "全部完成!文件位于 $OUTPUT_DIR/"
运行效果:
bash batch_generate.sh
共 500 条记录,开始批量生成...
[1/500] 生成: 北京云创科技.docx
Merged: contract-template.docx → ./output/北京云创科技.docx
Replaced 3 placeholders
[2/500] 生成: 上海数联信息.docx
Merged: contract-template.docx → ./output/上海数联信息.docx
Replaced 3 placeholders
...
[500/500] 生成: 成都智联科技.docx
Merged: contract-template.docx → ./output/成都智联科技.docx
Replaced 3 placeholders
全部完成!文件位于 ./output/
500 份合同,一条脚本,几分钟跑完。 对比手动操作,效率提升何止 100 倍。
六、进阶:接入 AI Agent,让大模型帮你改文档
OfficeCLI 的另一大杀招是 MCP(Model Context Protocol)原生集成。配置后,Claude Code、Cursor 等 AI 编程工具就能直接操作 Office 文件。
6.1 添加 MCP 服务
在 Claude Code 的配置文件中添加:
{
"mcpServers": {
"officecli": {
"command": "officecli",
"args": ["serve"]
}
}
}
6.2 直接用自然语言操控文档
配置完成后,你可以这样跟 AI 对话:
用户:"帮我把 contract.docx 里所有金额大于10万的合同金额标红加粗"
>
AI:调用 OfficeCLI 读取文档 → 识别金额 → 修改样式 → 渲染预览 → 确认结果
整个过程 无需打开 Word,全在终端完成。
七、实战总结
| 场景 | 传统方案 | OfficeCLI |
|------|----------|-----------|
| 批量生成合同 | Python + python-docx,100+ 行代码 | 1 条 merge 命令 |
| 读取 Word 内容 | 安装 Office 或 LibreOffice | officecli read doc.docx |
| 查看排版效果 | 打开 Word 查看 | officecli render --format png |
| AI 操控文档 | 写复杂 API 胶水代码 | MCP 一行配置搞定 |
| 部署环境 | Python + pip + lxml 依赖 | 单文件,零依赖 |
三件事,记住就够了:
- `officecli create` — 创建文档
- `officecli merge` — 模板 + JSON 批量生成(这才是生产力核心)
- `officecli serve` — 接入 AI Agent,让大模型替你改文档
这个项目还在高速迭代中,截止发稿前已 12K+ Stars,建议现在就 Star 起来备用。
GitHub 仓库:[https://github.com/iOfficeAI/OfficeCLI](https://github.com/iOfficeAI/OfficeCLI)
>
官方文档:[https://officecli.dev](https://officecli.dev)
下次老板再让你"手动改500份合同",你知道该怎么做了。
本文由 CSDN 技术博主原创,基于 OfficeCLI v1.0.125 编写。如果对你有帮助,欢迎点赞收藏转发。
更多推荐



所有评论(0)