Категория

C#/VB.NET: сравнение двух документов Word

2023-07-31 07:27:44 zaki zou

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

Ниже приведен скриншот двух документов Word, которые будут сравниваться.

C#/VB.NET: Compare Two Word Documents

Установите 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();
            }
        }
    }

C#/VB.NET: Compare Two Word Documents

Сравните два документа и верните вставки и удаления в списках

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

  • Загрузите два документа 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();
            }
        }
    }

C#/VB.NET: Compare Two Word Documents

Подать заявку на временную лицензию

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

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