Вы можете легко сравнивать два или более документов Word или сравнивать несколько версий одного и того же файла Word на наличие различий и сходств программно в ваших приложениях .NET. В этой статье вы узнаете, как сравнивать два или более документа Word и выделять различия с помощью C#.
В этой статье обсуждаются/рассматриваются следующие темы:
- C# API для сравнения файлов DOCX
- Сравните два или более документов Word с помощью C#
- Сравните документы Word с помощью Stream в C#
- Получить текст изменений с помощью C#
- Сравнение свойств документов с использованием C#
- Сравните защищенные паролем документы Word с помощью C#
- Сравните закладки в документах 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, выполнив простые шаги, указанные ниже:
- Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
- Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
- Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
- Вызовите метод Compare() с указанием пути к выходному файлу.
В следующем примере кода показано, как сравнить два или более документов Word, и выделены различия с помощью C#.
// инициализировать компаратор
Comparer comparer = new Comparer("C:\\Files\\source.docx");
// добавить целевой файл для сравнения
comparer.Add("C:\\Files\\target.docx");
// сравнить и сохранить различия
comparer.Compare("C:\\Files\\result.docx");
Результирующий документ также включает сводную страницу в конце документа, на которой показана сводка всех изменений, обнаруженных при сравнении.
Класс Comparer — это основной класс, который позволяет вам контролировать и выполнять процесс сравнения. Он предоставляет несколько методов для сравнения двух или более документов. Метод Add() этого класса добавляет файл в процесс сравнения. Вы можете легко добавить несколько файлов для сравнения, используя метод Add(), как показано ниже:
comparer.Add("target1.docx");
comparer.Add("target2.docx");
comparer.Add("target3.docx");
Метод Compare() класса Comparer сравнивает исходный и целевой документы. Этот метод выделяет различия и сохраняет результаты в пути к файлу, указанному в качестве входного параметра.
Сравните документы Word с помощью Stream в C#
Вы можете сравнить два или более документа Word с помощью FileStream, выполнив следующие шаги:
- Чтение исходного файла в объекте Stream
- Чтение целевого файла в другом объекте Stream
- Создайте экземпляр класса Comparer с исходным объектом Stream.
- Вызовите метод Add() с целевым объектом Stream, чтобы добавить к сравнению
- Вызовите метод 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, программно, выполнив простые действия, указанные ниже:
- Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
- Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
- Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
- Вызовите метод Compare().
- Вызовите метод GetChanges(), чтобы получить сведения об изменениях.
- Показать изменения
В следующем примере кода показано, как получить текст изменений с помощью 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, выполнив следующие шаги:
- Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
- Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
- Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
- Создайте экземпляр CompareOptions.
- Установите для параметра CompareVariableProperty значение true.
- Установите для параметра CompareDocumentProperty значение true.
- Вызовите метод 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);
Вы можете улучшить процесс сравнения, применяя различные параметры сравнения. Для этого класс CompareOptions позволяет задавать различные параметры сравнения для достижения конкретных результатов. CompareDocumentProperty этого класса позволяет включить сравнение встроенных и настраиваемых свойств в формате Word. Параметр CompareVariableProperty позволяет включить сравнение свойств переменных в формате Word.
Сравните защищенные паролем документы Word с помощью C#
Вы можете программно сравнить два или более документов Word, защищенных паролем, выполнив следующие действия:
- Создайте экземпляр класса LoadOptions.
- Укажите пароль для исходного файла
- Создайте экземпляр класса Comparer с путем к исходному файлу DOCX и параметрами LoadOptions.
- Вызовите метод Add() с указанием целевого пути к файлу DOCX и экземпляра LoadOptions с паролем.
- Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
- Вызовите метод 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, выполнив следующие действия:
- Создайте экземпляр класса Comparer с путем к исходному файлу DOCX.
- Вызовите метод Add() с целевым файлом DOCX, чтобы добавить к сравнению
- Повторите описанный выше шаг, чтобы добавить больше файлов для сравнения.
- Создайте экземпляр CompareOptions.
- Установите для параметра CompareBookmarks значение true.
- Вызовите метод 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);
Свойство CompareBookmarks позволяет сравнивать закладки, доступные в исходном и целевом документах.
Получить бесплатную лицензию
Вы можете попробовать API без ограничений на пробную версию, запросив бесплатную временную лицензию.
Вывод
В этой статье вы узнали, как сравнивать два или более документов Word и выделять различия с помощью C#. Вы также узнали, как получить список выделенных изменений. Более того, вы научились программно сравнивать закладки в документах Word. Кроме того, вы узнали, как сравнивать защищенные паролем документы Word с помощью C#. Вы можете узнать больше о GroupDocs.Comparison для .NET API, используя документацию. В случае возникновения каких-либо неясностей, пожалуйста, свяжитесь с нами на форуме.