先说为啥要写这篇
前两天帮朋友把他 13 页的技术笔记排成 docx,发给他的时候他第一反应是:
"这也太整齐了吧?我调格式调了一晚上。"
我说我花了不到 5 分钟。他不信。
我后来仔细想了想:朋友三晚上是在 Word 里手动改字号、改行距、加目录、加表格底纹、给代码块加边框……而我这 5 分钟里,真正花在"排版"上的时间是 0——所有格式都是我让 AI 直接生成的。
所以今天这篇文章不打算吹"AI 多牛",我想认真拆一下:80% 这个数字到底是怎么省出来的,以及——如果你只会用 Word,到底值不值得试试 AI 排版。
手工排版是真苦
如果你做过下面任何一件事,你应该懂我在说什么:
写完 30 页报告,回头发现 H2 和 H3 字号一模一样,分不清层级 改完标题发现目录没更新,按 F9 后格式又跑偏了 给代码块加边框,结果 N 个代码块要逐个选中改 4 次 表格里塞了一行特别长的路径,整个表格被挤变形 页脚页码格式调了 5 次,第 6 次发现第 1 页页码又不对
我以前干这种事能熬到凌晨。改格式不是写文章,是给 Word 当校对。
后来我意识到:这种工作有一个很明确的特征——它是模式化的、重复的、有标准答案的。这正好是 AI 最擅长的领域。
我现在用两条路线,各有适用场景
路线 A:OfficeAI 插件(适合"模板派"用户)
这是我朋友在用、我自己偶尔也用的路子。OfficeAI 是一个 Word/WPS 插件,思路是把公文排版的最佳实践做成模板库。
三步走:
- 复制模板
:打开文档 → 顶部「排版」按钮 → 选一个模板(比如"通用公文排版")→ 复制模板 - 改模板
:进入编辑界面,调整字体 / 字号 / 行距 / 页边距,保存成你自己的版本 - 一键套用
:下次新文档,直接选你的模板 → 点「开始排版」——标题自动加粗、正文自动对齐、页边距精准到位
适用:写公文 / 报告 / 标书 / 通知类文档。 不适用:你写的东西不是"模板能描述的"——比如带代码块、带表格、带逻辑图的教程。
这条路线的核心思路:人定模板,AI 执行。你负责思考"我的文档应该长什么样",AI 负责"按你说的来"。省的时间主要是重复劳动。
路线 A 的操作步骤(图文版)
如果你决定试试 OfficeAI,下面这套流程跑下来大约 15–20 分钟。
Step 1:下载安装
去 office-ai.cn 下载对应你 Office/WPS 版本的插件,按提示一路"下一步"装完。重启 Word,新标签栏应该能看到「OfficeAI」按钮。


Step 2:装一个本地大模型(可选但推荐)
插件默认走云端 API,但你想完全离线或者敏感文档不出网,建议装一个本地模型:
# macOS / Linux 安装 ollama(一个跑本地大模型的工具)curl-fsSL https://ollama.com/install.sh |sh# 拉一个适合办公场景的小模型(4 GB 显存就够)ollama pull qwen2.5:7bollama pull llama3.1:8b装完后在 OfficeAI 插件的设置里把"推理后端"切到"本地 Ollama",填 http://localhost:11434。这样你之后的所有排版 / 写作 / 改写请求全部在本地跑,数据不出公司。



不装本地模型也行。插件会问你要不要用云端 API,直接关掉这个提示也能用——它会自动回落到"模板套用"模式(不需要大模型)。
Step 3:建你的第一个专属模板
打开一个空 Word 文档,点击顶部「排版」按钮,右侧面板会列出系统自带模板。

找一个最接近你使用场景的(公文选"通用公文排版",合同选"合同模板") 点模板右上角的「更多」→「复制模板」→ 给模板起个名字(比如"我的周报-2026") 点「编辑模板」进入自定义界面 切到「版式」标签:调页边距(公文常用 上下 2.54cm / 左右 3.18cm) 切到「正文样式」标签:标题字体(公文用 方正小标宋_GBK)、正文字体(仿宋_GB2312 三号)、行距(固定值 28 磅) 切到「页面」标签:加页码(格式选"-1-")、加页眉(部门 + 文档名) 右上角「保存」 
Step 4:套用到现有文档
打开你已经写好的 Word 文档(哪怕是一坨没格式的纯文字),点「排版」→ 选你刚保存的模板 → 点「开始排版」。AI 会自动识别哪些是标题、哪些是正文、哪些是落款,按你的模板格式套上去。
大约 10 秒出结果。然后你手动 F9 刷新一下目录(如果有的话),就完事了。

Step 5:维护你的模板库
我建议按"使用频率 × 重要程度"建 3–5 个模板,不要超过 8 个:
周报 / 月报 / 年终总结(最常用) 公文(红头文件格式) 合同 / 协议 标书 / 方案书(重要且模板化)
每个新模板建好后,用它套一篇最近的真实文档验证一下,否则你存着不用,下次想用时还要重新调。
路线 B:officecli CLI(适合"代码派"用户 / 内容生成者)
这是我最近 3 个月每天都在用的路子。本质是:让 AI 直接读 markdown,然后一行命令吐出一个完整 docx。
刚才帮朋友排的那 13 页笔记,流程是这样:
源 markdown(312 行) ↓ Python 解析 → 生成 batch JSON(386 个 ops) ↓ officecli batch 一次性执行完整 docx(11 页 + 封面 + 目录 + 页脚)386 个操作(加段落、加表格、填文字、加页脚、设字体字号、画背景色……),一个 batch 调用搞定,耗时大约 90 秒。
写了一个 200 行的 Python 解析脚本(这个之前就写好了,没花时间) 跑了一次 officecli batch看了几个关键页面截图,确认封面、表格、代码块都对 修了一个表格列宽问题 重跑一次
真正需要我"判断"的时间:大约 4 分钟。剩下全是机器干的。
路线 B 的操作步骤(命令行版)
装 officecli 大概 5 分钟,写解析脚本第一次 1–2 小时,之后每篇 1 分钟。
Step 1:装 officecli
它是个单一二进制,没有 Python 依赖,不需要装 Office。
# macOS / Linux(推荐)curl-fsSL https://d.officecli.ai/install.sh |bash# Windows PowerShellirm https://d.officecli.ai/install.ps1 |iex# 验证装好了officecli--version# 期望: officecli 1.0.120(或更高)如果下载不动,GitHub releases 里有原始二进制包(macOS / Linux / Windows 都有),手动解压扔到 PATH 里也行。
Step 2:建一个空文档 + 看一眼它的结构
# 创建一个空白 docxofficecli create hello.docxofficecli open hello.docx# 看一眼文档"骨架"——所有 docx 的根路径都是 /bodyofficecli get hello.docx /body --depth 1# 加一段标题、一段正文officecli add hello.docx /body --type paragraph --prop text="Hello Office"--prop style=Heading1officecli add hello.docx /body --type paragraph --prop text="这是我的第一段"--prop size=11pt# 加一个有页码的页脚officecli add hello.docx / --type footer --prop type=default --prop align=center --prop text="第 "--prop field=pageofficecli add hello.docx /footer[1]/p[1]--type run --prop text=" 页"officecli close hello.docx# 用浏览器打开 hello.docx 看效果officecli view hello.docx html --browser到这里你已经会了 officecli 80% 的功能——后面所有高级操作都是这套语法的组合。
Step 3:理解"三层精度"模型
officecli 把"格式调整的精细度"分三层:
| L1(高层命令) | --prop text="..."--prop style=Heading1 | |
| L2(点号属性) | --prop font.color=red--prop font.size=14pt | |
| L3(原始 XML) | officecli raw-set |
先用 L1 写,L1 解决不了再上 L2,最后才用 L3。这个分层会救你很多次。
Step 4:写 markdown → docx 的解析脚本
这是 officecli 真正的威力所在——markdown 解析 + 自动生成 batch JSON + 一次 batch 执行。
核心循环长这样(伪代码):
import json, subprocess, pathlibdef parse_markdown(md_text): ops = []for line in md_text.split("\n"):if line.startswith("# "):# 一级标题 → 封面 Title ops.append({"command":"add","path":"/body","type":"paragraph","props":{"text":line[2:],"style":"Title","size":"32pt","bold":True}})elif line.startswith("## "):# 二级标题 → Heading1 + 分页 ops.append({"command":"add","path":"/body","type":"paragraph","props":{"text":line[3:],"style":"Heading1","size":"20pt","bold":True}}) ops.append({"command":"set","path":"/body/p[last()]","props":{"pageBreakBefore":True}})elif line.startswith("```"):# 代码块 → 等宽字体 + 灰底 ... # 略,处理 ``` ... ``` 区间elif line.startswith("|"):# 表格 → 解析为 add table + set cells ... # 略elif line.strip():# 普通段落 ops.append({"command":"add","path":"/body","type":"paragraph","props":{"text":line,"size":"11pt"}})return ops# 1. 生成 batch JSONmd = pathlib.Path("input.md").read_text(encoding="utf-8")ops = parse_markdown(md)pathlib.Path("build.json").write_text(json.dumps(ops, ensure_ascii=False))# 2. 跑一次 batchsubprocess.run(["officecli","create","output.docx","--force"])subprocess.run(["officecli","batch","output.docx","--input","build.json"])subprocess.run(["officecli","close","output.docx"])subprocess.run(["officecli","validate","output.docx"])上面这段是骨架——你按自己 markdown 的写法扩展 parse_markdown。我自己的完整版(含表格、代码块、blockquote、TOC)大约 250 行,跑 300 行的 markdown 大约 1 秒生成 JSON。
Step 5:看一眼结果,修一两个细节,再来一次



# 渲染成 HTML 截图(要 headed browser,第一次会有点慢)officecli view output.docx screenshot --page 1 -o p1.pngofficecli view output.docx screenshot --page 3 -o p3.png# 修问题:比如发现表格列宽不合理officecli set output.docx /body/tbl[1]/tr[1]/tc[2]--prop width=4000# 验证(必须!否则你不知道有没有破文件)officecli validate output.docx# 期望: Validation passed: no errors found.两种路线的真实取舍
用 OfficeAI 插件的场景:
你写的是公文、合同、标书——有固定格式 你不写代码、不碰 markdown 你想要"开箱即用",不想学新工具 你的文档结构是"标题-正文-表格-结尾"这种标准形态
用 officecli 的场景:
你的内容源是 markdown(程序员、技术作者、笔记党) 你文档里有代码块、流程图、数学公式这些 Word 处理不好的元素 你需要批量处理(比如一次排 50 篇笔记) 你愿意花 1–2 小时学一个工具,之后每天省 1 小时
最容易踩的 3 个坑
我身边第一次用 AI 排版的人,几乎都掉进同一个坑:
- "AI 排出来的就是好的"
—— 不会。AI 会给你一个 80 分的版本,你需要人肉看一遍截图、修一两个细节。期待合理很重要。 - "AI 能理解我的文档结构"
—— 半对半错。AI 能识别标题层级,但如果你 markdown 本身写得乱(比如标题跳级、代码块没闭合),AI 也救不了你。先写好内容,AI 才排得漂亮。 - "用了一次不满意就放弃"
—— 第一次用,调试时间可能比手工还长。把它当工具学,不当工具试。给自己一个项目完整跑通,再判断值不值得。
夜雨聆风