C#/VB.NET: comparar dois documentos do Word

2023-07-31 07:28:30

Não é incomum no trabalho recebermos duas versões de um documento do Word e nos depararmos com a necessidade de encontrar as diferenças entre elas. A comparação de documentos é particularmente importante e popular nas áreas de leis, regulamentos e educação. Neste artigo, você aprenderá como comparar dois documentos do Word em C# e VB.NET usando o Spire.Doc for .NET.

Abaixo está uma captura de tela dos dois documentos do Word que serão comparados.

C#/VB.NET: Compare Two Word Documents

Instalar o Spire.Doc for .NET

Para começar, você precisa adicionar os arquivos DLL incluídos no pacote Spire.Doc for .NET como referências em seu projeto .NET. Os arquivos DLL podem ser baixados deste link ou instalados via NuGet.

PM> Install-Package Spire.Doc

Compare dois documentos e salve o resultado em um terceiro documento do Word

Salvar o resultado da comparação em um documento separado do Word nos permite ver todas as alterações feitas no documento original, incluindo inserções, exclusões e modificações na formatação. A seguir estão as etapas para comparar dois documentos e salvar o resultado em um terceiro documento do Word usando o Spire.Doc for .NET.

  • Carregue dois documentos do Word separadamente enquanto inicializa os objetos Documento.
  • Compare esses dois documentos usando o método Document.Compare().
  • Salve o resultado em um terceiro documento do Word usando o método ;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

Comparar dois documentos e retornar inserções e exclusões em listas

Os desenvolvedores podem querer apenas obter as inserções e exclusões em vez de todas as diferenças. A seguir estão as etapas para obter inserções e exclusões em duas listas separadas.

  • Carregue dois documentos do Word separadamente enquanto inicializa os objetos Documento.
  • Compare dois documentos usando o método Document.Compare().
  • Obtenha as revisões usando a função construtora da classe DifferRevisions ;
  • Obtenha uma lista de inserções por meio da propriedade DifferRevisions.InsertRevisions.
  • Obtenha uma lista de exclusões por meio da propriedade DifferRevisions.DeleteRevisions.
  • Percorra os elementos nas duas listas para obter a inserção e exclusão específicas.
  • 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

Solicitar uma licença temporária

Se você deseja remover a mensagem de avaliação dos documentos gerados ou se livrar das limitações de função, por favor solicite uma licença de teste de 30 dias para você mesmo.

Veja também