文档对比功能可以用于核对 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>12.11.9</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 天的临时许可证。