Оглавление
Установлено через NuGet
PM> Install-Package Spire.Doc
Ссылки по теме
Нередко на работе мы можем получить две версии документа Word и столкнуться с необходимостью найти различия между ними. Сравнение документов особенно важно и популярно в области законов, правил и образования. В этой статье вы узнаете, как сравнить два документа Word на C# и VB.NET. с помощью Spire.Doc for .NET.
- Сравните два документа и сохраните результат в третьем документе Word
- Сравните два документа и верните вставки и удаления в списках
Ниже приведен скриншот двух документов Word, которые будут сравниваться.

Установите Spire.Doc for .NET
Для начала вам необходимо добавить файлы DLL, включенные в пакет Spire.Doc for .NET, в качестве ссылок в ваш проект .NET. Файлы DLL можно загрузить по этой ссылке или установить через NuGet.
PM> Install-Package Spire.Doc
Сравните два документа и сохраните результат в третьем документе Word
Сохранение результата сравнения в отдельном документе Word позволяет увидеть все изменения, внесенные в исходный документ, включая вставки, удаления, а также модификации форматирования. Ниже приведены шаги для сравнения двух документов и сохранения результата в третьем документе Word с помощью Spire.Doc for .NET.
- Загрузите два документа Word по отдельности при инициализации объектов Document.
- Сравните эти два документа, используя метод Document.Compare().
- Сохраните результат в третьем документе Word, используя метод ;Document.SaveToFile().
- C#
- VB.NET
using Spire.Doc;
namespace CompareDocuments
{
class Program
{
static void Main(string[] args)
{
//Load one Word document
Document doc1 = new Document("C:\\Users\\Administrator\\Desktop\\original.docx");
//Load the other Word document
Document doc2 = new Document("C:\\Users\\Administrator\\Desktop\\revised.docx");
//Compare two documents
doc1.Compare(doc2, "John");
//Save the differences in a third document
doc1.SaveToFile("Differences.docx", FileFormat.Docx2013);
doc1.Dispose();
}
}
}

Сравните два документа и верните вставки и удаления в списках
Разработчики могут захотеть получить только вставки и удаления, а не все различия. Ниже приведены шаги для получения вставок и удалений в двух отдельных списках.
- Загрузите два документа Word по отдельности при инициализации объектов Document.
- Сравните два документа с помощью метода Document.Compare().
- Получите ревизии с помощью функции-конструктора класса DifferRevisions.
- Получить список вставок через свойство DifferRevisions.InsertRevisions.
- Получить список удалений через свойство DifferRevisions.DeleteRevisions.
- Переберите элементы в двух списках, чтобы получить конкретную вставку и удаление.
- C#
- VB.NET
using Spire.Doc;
using Spire.Doc.Fields;
using System;
namespace GetDifferencesInList
{
class Program
{
static void Main(string[] args)
{
//Load one Word document
Document doc1 = new Document("C:\\Users\\Administrator\\Desktop\\original.docx");
//Load the other Word document
Document doc2 = new Document("C:\\Users\\Administrator\\Desktop\\revised.docx");
//Compare the two Word documents
doc1.Compare(doc2, "Author");
//Get the revisions
DifferRevisions differRevisions = new DifferRevisions(doc1);
//Return the insertion revisions in a list
var insetRevisionsList = differRevisions.InsertRevisions;
//Return the deletion revisions in a list
var deletRevisionsList = differRevisions.DeleteRevisions;
//Create two int variables
int m = 0;
int n = 0;
//Loop through the insertion revision list
for (int i = 0; i < insetRevisionsList.Count; i++)
{
if (insetRevisionsList[i] is TextRange)
{
m += 1;
//Get the specific revision and get its content
TextRange textRange = insetRevisionsList[i] as TextRange;
Console.WriteLine("Insertion #" + m + ":" + textRange.Text);
}
}
Console.WriteLine("=====================");
//Loop through the deletion revision list
for (int i = 0; i < deletRevisionsList.Count; i++)
{
if (deletRevisionsList[i] is TextRange)
{
n += 1;
//Get the specific revision and get its content
TextRange textRange = deletRevisionsList[i] as TextRange;
Console.WriteLine("Deletion #" + n + ":" + textRange.Text);
}
}
Console.ReadKey();
}
}
}

Подать заявку на временную лицензию
Если вы хотите удалить оценочное сообщение из сгенерированных документов или избавиться от функциональных ограничений, пожалуйста запросить 30-дневную пробную лицензию для себя.