Текстовые документы — наиболее распространенный способ составления контрактов, соглашений, бумаг и многих других официальных документов. Если вам нужно сравнить и объединить два документа Word, точно так же, как параметр отслеживания изменений в Microsoft Word, мы можем сделать это программно в наших приложениях .NET. В этой статье мы обсудим, как сравнить два документа Word и выделить выявленные различия с помощью C#. Кроме того, мы рассмотрим, как сравнивать документы, защищенные паролем, принимать и отклонять изменения, а также сравнивать более двух документов с примерами C#.

Сравните документы Word, чтобы найти различия с помощью .NET API

Здесь обсуждаются следующие темы:

.NET API для сравнения документов Word

GroupDocs.Comparison предоставляет .NET API, который позволяет сравнивать, а затем объединять различные документы из нескольких форматов файлов в приложении .NET. Я буду использовать его .NET API, т.е. GroupDocs.Comparison for .NET для сравнения документов Word.

Вы можете загрузить библиотеки DLL или установщик MSI из раздела загрузок или установить API в своем приложении .NET через NuGet.

PM> Install-Package GroupDocs.Comparison

Сравните документы Word с помощью C#

Если у вас есть две версии документа, вы можете сравнить документы, найти их различия (добавления, удаления) и создать новый документ, в котором будут показаны все изменения. Ниже приведены шаги для сравнения любых двух документов Word и выявления различий.

  • Загрузите первый документ Word, используя класс Comparer.
  • Добавьте второй файл в Comparer, используя метод Add().
  • Сравните полученную сводку изменений, просто вызвав метод Compare().

В следующем коде C# показано, как сравнивать документы Word и получать изменения в результирующем документе.

/*
 * Сравните два документа Word и выделите изменения с помощью C#
 */
using (Comparer comparer = new Comparer("path/document.docx"))
{
    comparer.Add("path/document-ver2.docx");
    comparer.Compare("path/compared-result.docx");
}

Принять или отклонить выявленные изменения документов Word с помощью C#

Подобно опции отслеживания изменений в MS Word, вы можете принять или отклонить каждое выявленное изменение. Ниже приведены шаги для сравнения, а затем принятия или отклонения выявленных изменений в документах Word.

  • Загрузите исходный документ и добавьте целевые документы Word, используя класс Comparer.
  • Сравните загруженные документы с помощью метода Compare().
  • Получить выявленные изменения с помощью метода GetChanges().
  • Теперь вы можете просматривать изменения и устанавливать ComparisonAction для каждого изменения.
    • Для каждого изменения вы можете выбрать Принять или Отклонить.
  • После внесения изменений вызовите метод ApplyChanges(), чтобы получить результирующий документ с примененными изменениями.

В следующем исходном коде C# сравниваются два документа Word, затем принимается идентифицированное изменение, а затем отклоняется другое.

/*
 * Принять и отклонить выявленные изменения, сравнив документы Word с помощью C#.
 */
using (Comparer comparer = new Comparer("path/document-1.docx"))
{
    comparer.Add("path/document-2.docx");
    comparer.Compare();
    ChangeInfo[] changes = comparer.GetChanges();
    
    // Отклонение первого идентифицированного изменения, и оно не будет добавлено в результирующий документ
    changes[0].ComparisonAction = ComparisonAction.Reject;
    comparer.ApplyChanges("path/rejected-change-result.docx", new ApplyChangeOptions { Changes = changes, SaveOriginalState = true });

    changes = comparer.GetChanges();
    changes[0].ComparisonAction = ComparisonAction.Accept;
    comparer.ApplyChanges("path/accepted-change-result.docx", new ApplyChangeOptions { Changes = changes });
}

Сравните более двух документов с помощью C#

Точно так же за один раз можно сравнить более двух документов. Ниже приведены шаги для сравнения нескольких документов Word на наличие различий и выделения выявленных изменений.

  • Загрузите первый документ Word, используя класс Comparer.
  • Продолжайте добавлять другие документы в Comparer, используя метод Add().
  • Вызовите метод Compare(), чтобы получить изменения и сводку изменений.

В следующем коде C# показано, как сравнить более двух документов Word и получить изменения в результирующем документе.

/*
 * Сравните несколько документов Word с помощью C#
 */
using (Comparer comparer = new Comparer("path/document-1.docx"))
{
    comparer.Add("path/document-2.docx");
    comparer.Add("path/document-3.docx");
    comparer.Add("path/document-4.docx");

    comparer.Compare("path/compare-result.docx");
}

Сравните защищенные паролем документы Word с помощью C#

Если ваши документы защищены паролем, просто укажите пароль при загрузке документов. Следующие шаги показывают, как мы можем сравнить содержимое защищенных паролем документов с помощью C#.

  • Подготовьте параметры загрузки для исходных и целевых документов, указав пароль.
  • Загрузите исходный документ с помощью класса Comparer.
  • Добавьте целевой документ в Comparer, используя подготовленные параметры загрузки.
  • Получите сводку различий, вызвав метод Compare().

В следующем примере кода C# сравниваются два файла Word, защищенные паролем, и создается результирующий документ, в котором выделяются различия.

/*
 * Сравните защищенные паролем документы Word с помощью C#
 */
using (Comparer comparer = new Comparer("path/protected-document-1.docx", new LoadOptions(){ Password = "SourceFilePassword" }))
{
    comparer.Add("path/protected-document-2.docx", new LoadOptions() { Password = "TargetFilePassword" });
    comparer.Compare("path/compared-protected-docs-result.docx");
}

Получите бесплатную лицензию API

Вы можете получить бесплатную временную лицензию для использования API без ограничений пробной версии.

Вывод

В заключение мы научились сравнивать два или более документа Word с помощью C#. Далее, после выделения отличий, мы научились программно принимать и отклонять выявленные изменения. В конце мы также обсудили, как мы можем сравнивать защищенные паролем документы Word в приложениях .NET.

Существует множество других настроек для управления результатами сравнения, таких как настройка чувствительности сравнения, отображение только сводной страницы, игнорирование пробелов и многое другое. Узнайте больше о GroupDocs.Comparison для .NET. Посетите его документацию, чтобы начать создавать собственные приложения для сравнения документов для различных поддерживаемых форматов документов. По вопросам обращайтесь к нам через форум.

Смотрите также