在日常办公中,经常需要对比两个Word文档的差异,例如合同审批、技术文档版本核对、公文修订等。虽然Word内置了“比较”功能,但手动操作效率低且难以批量处理。通过Python脚本调用Free Spire.Doc for Python库,可以轻松实现自动化文档差异对比,并将结果以修订标记形式输出。
Free Spire.Doc for Python是一个免费库(有页数限制),无需安装Microsoft Office,可直接在Python环境中独立运行。核心API是Document类的Compare()方法,它将当前文档与另一个文档进行比对,所有差异会以Word修订模式(Track Changes)记录在原文档对象中,保存后即可在Word中查看。
## 一、环境安装
使用pip安装即可:- pip install Spire.Doc.Free
复制代码
## 二、基础文档对比
以下代码演示最基础的对比流程:加载两个文档,执行比对,输出带修订标记的结果文件。- 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()
复制代码
运行后生成的“对比结果.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还支持更多属性:
- IgnoreHeadersAndFooters:忽略页眉/页脚内容的差异
- TextCompareLevel:控制文本对比粒度,默认值为Word(单词级对比)
这些选项可以根据具体需求组合使用,实现更精细的对比控制。
## 四、处理包含修订的文档
若待对比的文档本身包含未接受的修订记录,直接调用Compare()会抛出异常。解决方案是在对比前先接受所有修订,清理痕迹。- 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文档
无论是文档审核、版本管理还是自动化办公流程,这套方案都能将重复性的手动核对工作转化为可靠的自动化脚本,显著提升效率。 |