Skip to content

Repository files navigation

文档快比(WordQuickCompare)

“文档快比”是一个面向 Windows 11 的轻量桌面工具。把旧版本和新版本 Word 文档拖入窗口后,它会调用本机 WPS 文字或 Microsoft Word 的原生文档比较功能,生成一份带修订痕迹的新 .docx 文件。

程序不会修改原始文档,不实现自己的文本 diff,也不直接修改 Word XML。所有处理都在本机完成,不上传文件、不联网、不收集数据,也不读取或记录文档正文。

功能截图

文档快比主界面

主界面支持分别拖入新旧文档,也可以一次同时拖入两个 .doc.docx 文件。

支持环境

  • Windows 11 x64
  • 自包含版:无需预装 .NET
  • 框架依赖版:需要 .NET 8 Desktop Runtime(x64)
  • 本机至少安装 WPS 文字或 Microsoft Word 之一,并且该版本暴露可用的 COM/OLE Automation 接口

第一版支持 .docx.doc;暂不支持 .docm.dot.dotx.dotm、PDF、TXT、加密或需要密码的文档。

使用方法

  1. 启动 WordQuickCompare.exe
  2. 将原始文档拖入左侧“旧版本”,将修改后文档拖入右侧“新版本”;也可以点击“选择文件”。还可以一次同时选中两个文件并拖到窗口任意位置,程序会将修改时间较早的文件放在左侧、较新的文件放在右侧。
  3. 确认顺序。左侧始终作为 OriginalDocument,右侧始终作为 RevisedDocument。修改时间只用于同时拖入两个文件时的默认排列;如时间不代表版本先后或排列放反,可点击“交换旧版和新版”。
  4. 选择“自动选择”、WPS 文字或 Microsoft Word。中文合同、报告和法律文档建议保留默认的“按字符比较”。
  5. 点击“开始对比”。成功后结果默认保存在新版本所在目录,并由执行比较的 Office 程序打开。

也可以把一至两个 .doc/.docx 文件直接拖到 EXE 图标:一个文件填入旧版本,两个文件按命令行参数顺序分别填入旧版和新版。程序不会自动开始比较,需由用户确认顺序。

重要:程序比较的是已经保存到磁盘的文件。WPS 或 Word 中尚未保存的修改无法参与比较。

引擎规则

自动选择的顺序为:

  1. 优先尝试上一次成功使用的引擎;
  2. 没有历史记录时优先 WPS;
  3. WPS 未安装、COM 创建失败或明确未提供可调用的比较接口时,尝试 Microsoft Word;
  4. 两者都不可用时给出明确提示。

手动指定 WPS 或 Word 时不会静默切换到另一引擎。Word 使用 Word.Application;WPS 依次探测 KWPS.ApplicationWPS.Applicationwps.ApplicationKingsoft.Writer.Application,候选项集中在 WpsCompareEngine.ProgIdCandidates 中,便于后续扩展。

程序始终创建独立 Office Automation 实例,不使用 GetActiveObject,不接管已有窗口,不强制结束 WINWORD.EXE 或 WPS 进程。两个源文档以只读方式打开,原生 CompareDocuments 的目标设为新文档,保存成功后才报告完成。

输出规则

默认输出到新版本所在目录:

{新版本文件名}_对比结果_{yyyyMMdd_HHmmss}.docx

如果重名会自动增加 _2_3 等序号。如果新版本目录不可写,会改存到:

用户文档\文档快比\

程序不会覆盖源文件或已有结果。

隐私、设置与日志

  • 不上传文档,不联网,不收集遥测;
  • 不读取、缓存或记录文档正文;
  • 设置:%AppData%\WordQuickCompare\settings.json
  • 日志:%LocalAppData%\WordQuickCompare\Logs\
  • 日志仅记录启动、引擎检测、任务状态、异常类型和 COM HRESULT,不记录正文;日志写入失败不会阻断比较。

项目结构

WordQuickCompare.sln
src/
  WordQuickCompare.App/       WPF、MVVM、拖拽和界面协调
  WordQuickCompare.Core/      校验、输出、设置、日志、STA、Word/WPS引擎
tests/
  WordQuickCompare.Tests/     零第三方依赖的离线核心逻辑测试
docs/
  manual-test-checklist.md    真实WPS/Word手工测试矩阵
build-release.ps1

构建与测试

安装 .NET 8 SDK 或更高版本 SDK(本项目目标框架固定为 .NET 8),在项目根目录执行:

dotnet build WordQuickCompare.sln
dotnet test WordQuickCompare.sln

测试工程采用项目内置的轻量测试入口,避免在离线环境下载第三方测试框架;dotnet test 会真实运行 10 项核心断言,包括校验、输出命名、双文件排序、备用目录、引擎选择、命令行参数和设置读写。

发布

powershell -ExecutionPolicy Bypass -File .\build-release.ps1

脚本会依次执行 Release 构建、测试,以及原生 win-x64 和 Office 兼容 win-x86 两组发布,且不开启裁剪:

dist/
  self-contained/
    WordQuickCompare.exe      无需预装.NET,单文件
  framework-dependent/
    WordQuickCompare.exe      原生win-x64;需要.NET 8 x64 Desktop Runtime
  office-compatible-self-contained/
    WordQuickCompare.exe      Office兼容版;无需预装.NET,单文件(推荐)
  office-compatible-framework-dependent/
    WordQuickCompare.exe      Office兼容版;需要.NET 8 x86 Desktop Runtime

Office COM 是进程外自动化接口,32 位客户端可以正常调用本机 64 位 Word/WPS。部分 Windows/Office 安装环境的 64 位 Word.Application 注册链路会在启动阶段等待约 120 秒后返回 0x80080005,而 32 位客户端可正常工作;因此遇到 Word 一直显示“正在调用”或上述错误时,请使用 office-compatible-self-contained。该兼容版仍用于 Windows 11 x64,不会降低文档格式或比较功能。

已知限制

  • 不同 WPS 版本的 ProgID、Documents.OpenCompareDocumentsSaveAs/SaveAs2 签名可能存在差异。适配器会从完整参数签名逐级降级;降级后,个别高级选项可能由 WPS 使用其默认值。
  • 如果当前 WPS 版本完全没有暴露程序化文档比较接口,程序会提示“当前安装的WPS版本未提供可调用的文档比较接口”。此时可改用 Microsoft Word 引擎。
  • 第一版不提供模拟鼠标、快捷键或点击菜单的兼容方式,也不修改注册表添加资源管理器右键菜单。
  • Office COM Automation 依赖本机桌面会话,不适合无交互 Windows 服务或服务器端批处理。
  • 少数 Office 安装环境只允许 32 位 COM 客户端稳定启动 Word。此时使用 Office 兼容版;程序不会为此修改注册表,也不会接管已有 Word 窗口。
  • 已损坏、加密、受保护、被独占占用或 Office 无法识别的文档不能比较。

常见问题

为什么看不到刚才在 WPS/Word 中做的修改?

请先在原编辑窗口保存文档。未保存到磁盘的修改不在本程序的输入文件中。

程序会改动原文件吗?

不会。两个源文件只读打开,比较结果保存为新的 .docx,输出路径也会再次校验,禁止覆盖任一源文件。

同时安装 WPS 和 Word 时用哪个?

自动模式优先上一次成功引擎;没有历史记录时优先 WPS。也可在下拉框中手动指定。

WPS 已安装但提示不支持比较怎么办?

不同 WPS 版本的 COM 接口确实可能不同。可先更新 WPS;若仍无可调用接口,请选择 Microsoft Word。第一版不会用模拟点击菜单作为后备方案。

Microsoft Word 一直显示“正在调用”怎么办?

先等待错误提示并查看日志。如果日志出现 0x800800050x80070520,或停在“准备创建COM实例”,请改用 dist\office-compatible-self-contained\WordQuickCompare.exe。这是 32 位 COM 客户端兼容版,但可以正常运行在 Windows 11 x64 并调用本机 64 位 Word;无需安装额外运行时。

失败后是否会留下隐藏进程?

失败时程序会关闭源文档并尝试退出本次创建的独立 Office 实例;不会杀进程。成功且选择自动打开时,结果窗口会留给用户继续查看和编辑,关闭“文档快比”不会关闭它。

手工测试

完整清单见 docs/manual-test-checklist.md,覆盖仅 WPS、仅 Word、两者并存、.doc/.docx、中文长路径、空格和括号、占用、不可写目录、损坏或加密、Office 忙、交换顺序、拖到 EXE 图标、高 DPI 及发布包验证。

About

文档快比:一款面向 Windows 的轻量级 Word 文档对比工具,可调用本机 WPS 或 Microsoft Word,快速生成带修订痕迹的文档对比结果。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages