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

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

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

В этой статье обсуждаются/рассматриваются следующие темы:

C# API для сравнения файлов DOCX

Для сравнения двух или более файлов DOCX я буду использовать GroupDocs.Comparison for .NET API. Он сравнивает два или более документов и обнаруживает изменения в содержании документов по словам, абзацам и символам. В результате создается сравнительный документ, в котором выделяются различия и приводится их сводка. Это также позволяет обнаруживать изменения и различия в стиле текста между аналогичными форматами документов. API поддерживает сравнение всех стандартных форматов документов, таких как PDF, HTML, Word, Excel, PowerPoint, сообщения электронной почты Outlook, диаграммы Visio, OpenDocument, AutoCAD и изображения.

Вы можете либо скачать DLL API, либо установить его с помощью NuGet.

Install-Package GroupDocs.Comparison

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

Вы можете программно сравнить два или более документов Word, выполнив простые шаги, указанные ниже:

  1. Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
  2. Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
  3. Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
  4. Вызовите метод Compare() с указанием пути к выходному файлу.

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

// инициализировать компаратор
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// добавить целевой файл для сравнения
comparer.Add("C:\\Files\\target.docx");

// сравнить и сохранить различия
comparer.Compare("C:\\Files\\result.docx");
Исходные и целевые файлы DOCX

Исходные и целевые файлы DOCX

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

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

Результирующий документ также включает сводную страницу в конце документа, на которой показана сводка всех изменений, обнаруженных при сравнении.

Класс Comparer — это основной класс, который позволяет вам контролировать и выполнять процесс сравнения. Он предоставляет несколько методов для сравнения двух или более документов. Метод Add() этого класса добавляет файл в процесс сравнения. Вы можете легко добавить несколько файлов для сравнения, используя метод Add(), как показано ниже:

comparer.Add("target1.docx");
comparer.Add("target2.docx");
comparer.Add("target3.docx");

Метод Compare() класса Comparer сравнивает исходный и целевой документы. Этот метод выделяет различия и сохраняет результаты в пути к файлу, указанному в качестве входного параметра.

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

Вы можете сравнить два или более документа Word с помощью FileStream, выполнив следующие шаги:

  1. Чтение исходного файла в объекте Stream
  2. Чтение целевого файла в другом объекте Stream
  3. Создайте экземпляр класса Comparer с исходным объектом Stream.
  4. Вызовите метод Add() с целевым объектом Stream, чтобы добавить к сравнению
  5. Вызовите метод Compare() с указанием пути к выходному файлу.

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

// читать исходные и целевые файлы
using (Stream sourceStream = File.OpenRead("C:\\Files\\source.docx"))
using (Stream targetStream = File.OpenRead("C:\\Files\\target.docx"))
{
    // инициализировать компаратор
    using (Comparer comparer = new Comparer(sourceStream))
    {
        // добавить целевой файловый поток для сравнения
        comparer.Add(targetStream);

        // сравнить и сохранить различия
        comparer.Compare(File.Create("C:\\Files\\result.docx"));
    }
}

Получить текст изменений с помощью C#

Вы можете получить текст изменений, найденных при сравнении документов Word, программно, выполнив простые действия, указанные ниже:

  1. Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
  2. Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
  3. Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
  4. Вызовите метод Compare().
  5. Вызовите метод GetChanges(), чтобы получить сведения об изменениях.
  6. Показать изменения

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

// инициализировать компаратор
Comparer сравниватьr = new Comparer("C:\\Files\\source.docx");

// добавить целевой файл для сравнения
сравниватьr.Add("C:\\Files\\target.docx");

// сравнивать
сравниватьr.Compare();

// получить изменения
ChangeInfo[] changes = сравниватьr.GetChanges();

Console.WriteLine("Count of changes: " + changes.Length);

// показать изменения
foreach (ChangeInfo change in changes)
{
    Console.WriteLine("Change Type: " + change.Type + ", Text: " + change.Text);
}
Count of changes: 10
Change Type: Inserted, Text:
Change Type: Inserted, Text:  Company ‼ HYPERLINK "http://www.aspose.com/" ¶Aspose Pty Ltd§ Division GroupDocs
Change Type: Inserted, Text:
Change Type: Inserted, Text: Cool
Change Type: Deleted, Text: test
Change Type: Inserted, Text:
Change Type: Inserted, Text: signatures
Change Type: Inserted, Text:
Change Type: Deleted, Text: Customers
Change Type: Deleted, Text: GroupDocs is used by companies of all sizes across the globe, from large multinational firms to small freelance businesses. They come to us because they have a need for a simple, one-stop-shop, document management solution.

Вы можете получить список изменений между исходным и целевым файлами, вызвав метод GetChanges() класса Comparer. Он возвращает список объектов ChangeInfo. Класс ChangeInfo представляет информацию об изменениях и предоставляет различные свойства для получения сведений об изменениях, таких как Text, Type и т. д.

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

Вы можете программно сравнить встроенные, настраиваемые свойства и переменные свойства документов Word, выполнив следующие шаги:

  1. Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
  2. Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
  3. Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
  4. Создайте экземпляр CompareOptions.
  5. Установите для параметра CompareVariableProperty значение true.
  6. Установите для параметра CompareDocumentProperty значение true.
  7. Вызовите метод Compare() с указанием пути к выходному файлу и CompareOptions.

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

// инициализировать компаратор
Comparer сравниватьr = new Comparer("C:\\Files\\source.docx");

// добавить целевой файл для сравнения
сравниватьr.Add("C:\\Files\\target.docx");

// определить параметры сравнения
CompareOptions options = new CompareOptions();
options.CompareVariableProperty = true; // activate the comparison of variable properties
options.CompareDocumentProperty = true; // activate the comparison of built and custom properties

// сравнивать
сравниватьr.Compare("C:\\Files\\result.docx", options);
Сравнение свойств документов с использованием C#

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

Вы можете улучшить процесс сравнения, применяя различные параметры сравнения. Для этого класс CompareOptions позволяет задавать различные параметры сравнения для достижения конкретных результатов. CompareDocumentProperty этого класса позволяет включить сравнение встроенных и настраиваемых свойств в формате Word. Параметр CompareVariableProperty позволяет включить сравнение свойств переменных в формате Word.

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

Вы можете программно сравнить два или более документов Word, защищенных паролем, выполнив следующие действия:

  1. Создайте экземпляр класса LoadOptions.
  2. Укажите пароль для исходного файла
  3. Создайте экземпляр класса Comparer с путем к исходному файлу DOCX и параметрами LoadOptions.
  4. Вызовите метод Add() с указанием целевого пути к файлу DOCX и экземпляра LoadOptions с паролем.
  5. Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
  6. Вызовите метод Compare() с указанием пути к выходному файлу.

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

// определить параметры загрузки для исходного файла
LoadOptions sourceLoadOptions = new LoadOptions() { Password = "1234" };

// инициализировать компаратор
Comparer сравниватьr = new Comparer("C:\\Files\\source.docx", sourceLoadOptions);

// добавить целевой файл для сравнения
сравниватьr.Add("C:\\Files\\target.docx", new LoadOptions() { Password = "5678" });

// сравнивать
сравниватьr.Compare("C:\\Files\\result.docx");

Класс LoadOptions позволяет указать дополнительные параметры при загрузке документа. Он предоставляет следующие свойства для указания:

  • FontDirectories — Список каталогов шрифтов для загрузки.
  • LoadText — указывает, что переданные строки являются текстом сравнения, а не путями к файлам (только для сравнения текста).
  • Пароль — пароль документа.

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

Вы можете программно сравнить закладки, доступные в документах Word, выполнив следующие действия:

  1. Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
  2. Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
  3. Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
  4. Создайте экземпляр CompareOptions.
  5. Установите для параметра CompareBookmarks значение true.
  6. Вызовите метод Compare() с указанием пути к выходному файлу и CompareOptions.

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

// инициализировать компаратор
Comparer сравниватьr = new Comparer("C:\\Files\\source.docx");

// добавить целевой файл для сравнения
сравниватьr.Add("C:\\Files\\target.docx");

// определить параметры сравнения
CompareOptions сравниватьOptions = new CompareOptions();
сравниватьOptions.CompareBookmarks = true; // сравнивать bookmarks

// сравнивать
сравниватьr.Compare("C:\\Files\\result.docx", сравниватьOptions);
Сравните закладки в документах Word с помощью C#

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

Свойство CompareBookmarks позволяет сравнивать закладки, доступные в исходном и целевом документах.

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

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

Вывод

В этой статье вы узнали, как сравнивать два или более документов Word и выделять различия с помощью C#. Вы также узнали, как получить список выделенных изменений. Более того, вы научились программно сравнивать закладки в документах Word. Кроме того, вы узнали, как сравнивать защищенные паролем документы Word с помощью C#. Вы можете узнать больше о GroupDocs.Comparison для .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.

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