
CZOA Word 批注转 Excel 实测:
200 条记录、2600 个字段全量核对
把 Word 批注导出到 Excel,不只是复制正文。主批注、回复、作者、日期、状态、线程关系、锚定文字和段落位置都要对应原始 DOCX。这次用两份复杂文档完成导出,再用不调用 CZOA 代码的 Python 程序逐条比较 DOCX 与 XLSX。
视频 10 分钟;英文配音、中文字幕,点击播放后加载 1080p 网页预览。
1. 测试结论
| 测试文件 | 主批注 | 回复 | 已解决 | 未解决 | 比较字段 | 结果 |
|---|---|---|---|---|---|---|
| 综合压力测试文档 | 70 | 30 | 26 | 74 | 1,300 | PASS |
| CNN 文章测试文档 | 50 | 50 | 26 | 74 | 1,300 | PASS |
| 合计 | 120 | 80 | 52 | 148 | 2,600 | 两轮通过 |
两份 DOCX 的 200 条记录和 2,600 个字段全部一致;XLSX 中没有由批注文字生成的可执行公式。
结论只覆盖本文提供的两份 DOCX、对应 XLSX 及其文件哈希,不代表未经测试的所有 DOCX 都必然得到相同结果。
2. 下载两组完整测试文件
测试一:综合压力文档
这份文档覆盖普通段落、表格、高亮文字、多位审阅者、主批注、回复、已解决和未解决线程,以及以 = 和超链接表达式开头的批注文字。

测试二:CNN 文章文档
这份文档包含长篇正文、图片、链接、引语、50 个主批注和 50 条回复。可识别检查点是文章结尾的 been updated with additional,导出表格最后一行应保留这段锚定文字及对应回复。

原始报道页面来自 CNN。测试附件用于验证文档处理流程,报道内容版权归原发布方。
独立核对程序
下载 verify_export_independent.py。程序只使用 Python 标准库,不需要 pip install。它把 DOCX 和 XLSX 当作 ZIP/OOXML 包读取,不调用 CZOA 代码,也不读取预先准备的正确答案清单。
3. 在 CZOA 导出 XLSX
- 打开 CZOA Word Comments to Excel。
- 点击 Choose DOCX,选择一份测试 DOCX。
- 等待浏览器解析完成。
- 检查 Records、Threads、Replies、Resolved 和 Open 数量。
- 点击 Download XLSX。
- 对第二份 DOCX 重复以上步骤。

查看第一份文件的汇总

查看第二份文件的汇总

4. macOS / Linux:完整核对指令
下载并解压 完整测试包。下面假设解压后的文件夹位于 ~/Downloads/czoa-word-comments。
完整 macOS / Linux 指令
cd ~/Downloads/czoa-word-comments
python3 --version
ls -lh
shasum -a 256 \
review-stress-100-word-web-validated.docx \
review-stress-100-word-web-validated_comments.xlsx \
cnn-archived-article-100-comments-word-web-validated.docx \
cnn-archived-article-100-comments-word-web-validated_comments.xlsx \
verify_export_independent.py
set -euo pipefail
python3 verify_export_independent.py \
review-stress-100-word-web-validated.docx \
review-stress-100-word-web-validated_comments.xlsx
python3 verify_export_independent.py \
cnn-archived-article-100-comments-word-web-validated.docx \
cnn-archived-article-100-comments-word-web-validated_comments.xlsx
echo "BOTH TESTS PASSED"建议使用 Python 3.9 或更高版本。set -euo pipefail 会让终端在任意一次核对失败时立即停止,所以只有两次程序都返回退出码 0,才会显示 BOTH TESTS PASSED。
五个文件的 SHA-256
9cf7e4929e42139ac27c3ba8486d938586540d3be76177314f4477b720715caa review-stress-100-word-web-validated.docx
96260111fe9d1cd1b5aba816277fc52ede47d4bf3c50e8420b5fa42ceb75cc3c review-stress-100-word-web-validated_comments.xlsx
dd757f241ebf960ff69de109e9db2dd4c8072b90f8c8f268742faf013149e893 cnn-archived-article-100-comments-word-web-validated.docx
53af5d36d31bcd0f46b532f3a45af6a083bab8a3d2d02ed61a01e3e770c1c880 cnn-archived-article-100-comments-word-web-validated_comments.xlsx
4e730f5a077b0b205635f08b03581d9888d386aed1ad852b41b842cac4df7c31 verify_export_independent.py
第一份文件的预期输出
DOCX SHA256: 9cf7e4929e42139ac27c3ba8486d938586540d3be76177314f4477b720715caa
XLSX SHA256: 96260111fe9d1cd1b5aba816277fc52ede47d4bf3c50e8420b5fa42ceb75cc3c
DOCX comment records: 100; XLSX rows: 100
DOCX types: {'Comment': 70, 'Reply': 30}
DOCX status: {'Resolved': 26, 'Open': 74}
Fields compared: 1300
PASS: all source comments and all 13 exported fields match; no formulas

第二份文件的预期输出
DOCX SHA256: dd757f241ebf960ff69de109e9db2dd4c8072b90f8c8f268742faf013149e893
XLSX SHA256: 53af5d36d31bcd0f46b532f3a45af6a083bab8a3d2d02ed61a01e3e770c1c880
DOCX comment records: 100; XLSX rows: 100
DOCX types: {'Comment': 50, 'Reply': 50}
DOCX status: {'Resolved': 26, 'Open': 74}
Fields compared: 1300
PASS: all source comments and all 13 exported fields match; no formulas

单独查看退出码
python3 verify_export_independent.py \
review-stress-100-word-web-validated.docx \
review-stress-100-word-web-validated_comments.xlsx
echo $?
0:所有受支持字段一致,没有发现公式单元格。1:发现差异、缺失记录、额外记录、公式单元格或必要的 DOCX 元数据缺失。
5. Windows PowerShell:完整核对指令
cd "$HOME\Downloads\czoa-word-comments"
py --version
Get-ChildItem
Get-FileHash .\*.docx, .\*.xlsx, .\verify_export_independent.py -Algorithm SHA256
py .\verify_export_independent.py `
.\review-stress-100-word-web-validated.docx `
.\review-stress-100-word-web-validated_comments.xlsx
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
py .\verify_export_independent.py `
.\cnn-archived-article-100-comments-word-web-validated.docx `
.\cnn-archived-article-100-comments-word-web-validated_comments.xlsx
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Write-Output "BOTH TESTS PASSED"
6. 程序到底比较什么
程序对每条记录比较 13 个字段:
| 1. Comment ID | 2. Thread ID | 3. Type |
| 4. Parent Comment ID | 5. Status | 6. Author |
| 7. Initials | 8. Date (UTC) | 9. Document area |
| 10. Nearest heading | 11. Paragraph | 12. Referenced text |
| 13. Comment text | ||
它还检查记录总数、缺失或额外的 Comment ID、主批注与回复的父级和线程关系、回复自己的作者和日期、根线程的解决状态、公式单元格、重复 ZIP 成员、缺失 OOXML 部件和未闭合的批注锚点。
7. 为什么不能只看 Word 右侧批注窗格
Word 网页版把主批注和回复组合成一个讨论线程,所以界面上的讨论数量不等于 XLSX 记录行数。第一份文件显示 70 个线程,导出后有 100 行;第二份文件显示 50 个线程,导出后同样有 100 行。
人工查看仍然有价值。第二份文件最后一条记录保留了 been updated with additional 和对应审阅消息,可以与 Word 中的最后一个线程直接对应。

人工查看能说明被看到的记录正确;本文的 PASS 来自对全部 200 条记录和 2,600 个字段的程序化比较。
8. 工具边界
- 程序核对保存进 DOCX 包中的批注数据,无法恢复只存在于云端活动记录中的内容。
- Word 页码由版式引擎计算,浏览器 XML 解析无法可靠复现,所以导出不包含页码。
- Nearest heading 是根据段落样式推断的结构上下文,不是 Word 页面坐标。
- Track Changes 与 Comments 是两套数据;本测试不把修订记录转换成批注。
- 结论适用于本文提供的两份 DOCX/XLSX 文件及其对应哈希。
两轮测试的结果一致:DOCX 源记录数与 XLSX 行数相同,全部 13 个字段逐条匹配,回复关系和状态得到保留,批注文字没有变成公式。你也可以用同一程序核对自己的 DOCX 和 CZOA 导出结果。
本文截图、视频和核对结果来自 2026 年 9 月 23 日的本地测试。网页预览视频经过压缩;下载文件保持原始测试内容。
工具:CZOA Word Comments to Excel · 原始报道:CNN