文档对比功能可以用于核对 Word 文档的不同版本,以确定对文档所做的更改。通过使用文档对比功能,用户可以轻松找出文档中增加、删除和修改的内容,以及格式的调整。本文将介绍如何使用 Spire.Doc for Java 通过 Java 程序比较两个 Word 文档。
下图展示了用于比较的两个 Word 文档。

安装 Spire.Doc for Java
首先,您需要在 Java 程序中添加 Spire.Doc.jar 文件作为依赖项。您可以从此链接下载 JAR 文件;如果您使用 Maven,则可以通过在 pom.xml 文件中添加以下代码导入 JAR 文件。
<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.doc</artifactId>
        <version>13.10.6</version>
    </dependency>
</dependencies>
比较两个 Word 文档并保存比较结果
使用 Document.compare() 方法对比两个文档后,可以将比较结果保存到新的 Word 文档中,从而方便查看对原始文档所做的所有改动。 以下是详细操作步骤:
- 创建两个 Document 类的对象。
- 使用 Document.loadFromFile() 方法载入两个 Word 文档。
- 使用 Document.compare() 方法比较两个文档。
- 使用 Document.saveToFile() 方法将结果保存到新的文档中。
- Java
import com.spire.doc.Document;
public class compareDocuments {
    public static void main(String[] args) {
        //创建两个Document类的对象
        Document original = new Document();
        Document revised = new Document();
        //载入原文档和修改后的文档
        original.loadFromFile("第二版.docx");
        revised.loadFromFile("第三版.docx");
        //比较两个文档
        original.compare(revised, "李阳");
        //保存比较结果
        original.saveToFile("比较结果.docx");
        original.dispose();
        revised.dispose();
    }
}
比较两个 Word 文档并返回插入和删除的内容
如果只需要获取插入和删除的内容,可以在对比文档后使用 DifferRevisions.getInsertRevisions() 和 DifferRevisions.getDeleteRevisions() 方法获取插入改动和删除改动。以下是详细操作步骤:
- 创建两个 Document 类的对象。
- 使用 Document.loadFromFile() 方法载入两个 Word 文档。
- 使用 Document.compare() 方法比较两个文档。
- 使用 DifferRevisions 构造函数检索修订版本。
- 使用 DifferRevisions.getInsertRevisions() 方法获取插入改动列表。
- 使用 DifferRevisions.getDeleteRevisions() 方法获取删除列表。
- 循环遍历两个列表中的项目,以获取特定的插入和删除内容。
- Java
import com.spire.doc.DifferRevisions;
import com.spire.doc.Document;
import com.spire.doc.fields.TextRange;
import com.spire.ms.System.Collections.Generic.List;
public class getInsertionDeletion {
    public static void main(String[] args) {
        //创建两个Document类的对象
        Document doc1 = new Document();
        Document doc2 = new Document();
        //载入原文档
        doc1.loadFromFile("第二版.docx");
        //载入修改后的文档
        doc2.loadFromFile("第三版.docx");
        //比较两个Word文档
        doc1.compare(doc2, "李阳");
        //获取文档中的改动
        DifferRevisions differRevisions = new DifferRevisions(doc1);
        //获取插入改动列表
        List insertRevisionsList = differRevisions.getInsertRevisions();
        //获取删除改动列表
        List  deleteRevisionsList = differRevisions.getDeleteRevisions();
        int m = 0;
        int n = 0;
        //循环遍历插入改动列表以获取所有插入内容
        for (int i = 0; i < insertRevisionsList.size(); i++)
        {
            if (insertRevisionsList.get(i) instanceof TextRange)
            {
                m += 1;
                //获取指定插入改动,并获取插入的具体内容
                TextRange textRange = (TextRange)insertRevisionsList.get(i) ;
                System.out.println("插入 #" + m + ":" + textRange.getText());
            }
        }
        System.out.println("============================================");
        //循环遍历删除改动列表以获取所有插入内容
        for (int i = 0; i < deleteRevisionsList.size() ; i++)
        {
            if (deleteRevisionsList.get(i) instanceof TextRange)
            {
                n += 1;
                //获取指定删除改动,并获取删除的具体内容
                TextRange textRange = (TextRange) deleteRevisionsList.get(i) ;
                System.out.println("删除 #" + n + ":" + textRange.getText());
            }
        }
        doc1.dispose();
        doc2.dispose();
    }
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。
 



 
					



