
在日常办公场景中,合同审批、技术文档迭代、公文修订等工作中,经常需要对比两个 Word 文档版本之间的差异。虽然 Word 本身提供了“比较”功能,但当需要批量处理或集成到自动化流程中时,通过编程方式实现文档对比就变得非常必要。本文将介绍如何使用 Python 和 Free Spire.Doc for Python 库来实现 Word 文档的自动对比。
说明:本文使用的 Free Spire.Doc for Python 是免费库(有篇幅限制),无需安装 Microsoft Office,可在 Python 环境中独立运行。
一、环境准备
1.1 安装库
免费 Python 库可以通过 pip 直接安装:
pip install Spire.Doc.Free
1.2 核心 API 说明
库中 Document 类提供了 Compare() 方法,用于将当前文档与另一文档进行比对,语法如下:
document.Compare(Documentdocument, string author)
document:待比对的另一个 Document 对象 author:修订标记的作者名称,用于标识是谁做出的修改
比对完成后,差异会以修订(Track Changes)的形式标记在原文档对象中,保存后即可在 Word 中查看。
二、基础文档对比
2.1 基础代码示例
下面是最基础的对比代码,加载两个文档后执行比对,直接输出带修订标记的结果文件。
from spire.doc import * from spire.doc.common import * # 加载原始文档(基准版本) firstDoc = Document("Original.docx") # 加载修订文档(对比版本) secondDoc = Document("Revised.docx") # 执行对比:以 firstDoc 为基准,识别 secondDoc 相对于它的所有改动 # 第二个参数为修订人名称,会显示在修订标记中 firstDoc.Compare(secondDoc, "系统审计员") # 将对比结果保存为新文档 firstDoc.SaveToFile("对比结果.docx", FileFormat.Docx2016) # 释放资源 firstDoc.Dispose() secondDoc.Dispose()
代码逻辑非常简洁:实例化两个 Document 对象分别装载原始文档与修订文档,调用 Compare() 方法后,所有差异会以 Word 修订模式记录在新文档中,最后保存即可。
2.2 运行结果
执行上述代码后,生成的 对比结果.docx 会包含完整的修订标记:
新增内容以下划线或不同颜色标记
删除内容以删除线标记
每处修订都会显示修订人信息
三、自定义比较选项
在实际应用中,有时我们只关心文本内容的变化,而不希望格式修改(如字体、字号、颜色等)被标记为修订。这时可以使用 CompareOptions 类来定制比较行为。
3.1 忽略格式差异
from spire.doc import * from spire.doc.common import * # 加载文档 firstDoc = Document("Original.docx") secondDoc = Document("Revised.docx") # 创建比较选项并设置忽略格式 compareOptions = CompareOptions() compareOptions.IgnoreFormatting = True # 执行对比时传入比较选项 firstDoc.Compare(secondDoc, "系统审计员", compareOptions) # 保存结果 firstDoc.SaveToFile("对比结果_仅内容差异.docx", FileFormat.Docx2016) firstDoc.Dispose() secondDoc.Dispose()
设置 IgnoreFormatting = True 后,对比结果中将只体现文本内容的增删改,字体、颜色、段落格式等变化不会被标记为修订。
3.2 其他比较选项
根据版本不同,CompareOptions 还支持更多精细化控制:

四、处理包含修订的文档
在实际工作中,待对比的文档可能本身就包含修订记录。需要注意的是,参与对比的两个文档不能包含未处理的修订,否则会抛出异常。
解决方案是在对比前先接受(Accept)所有修订:
from spire.doc import * from spire.doc.common import * # 加载文档并接受所有修订 firstDoc = Document("Original_with_revisions.docx") firstDoc.AcceptChanges() # 重新加载或直接使用已清理的文档 secondDoc = Document("Revised.docx") # 此时可以正常对比 firstDoc.Compare(secondDoc, "系统审计员") firstDoc.SaveToFile("对比结果.docx", FileFormat.Docx2016) firstDoc.Dispose() secondDoc.Dispose()
或者,先将清理后的文档保存为新文件,再重新加载进行对比。
五、小结
通过以上代码示例可以看出,使用 Python 配合 Free Spire.Doc 实现 Word 文档对比只需要寥寥数行核心代码。该方案的主要优势在于:
自动化:可批量处理大量文档对比任务
独立性:不依赖 Microsoft Office 环境
可定制:支持忽略格式、页眉页脚、表格等差异
输出标准:对比结果直接输出为带修订标记的标准 Word 文档
无论是用于文档审核、版本管理还是自动化办公流程,这套方案都能显著提升工作效率,将重复性的手动核对工作转化为可靠的自动化脚本。
以上就是“用 Python 对比两个 Word 文档差异 (无需 Office)”的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。
扫码二维码 获取免费视频学习资料

- 本文固定链接: http://www.phpxs.com/post/14541/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料