Compara dos o más documentos de Word usando C#

Compara dos o más documentos de Word usando C#

Puede comparar fácilmente dos o más documentos de Word o comparar varias versiones del mismo archivo de Word en busca de diferencias y similitudes mediante programación en sus aplicaciones .NET. En este artículo, aprenderá cómo comparar dos o más documentos de Word y resaltar las diferencias usando C#.

Los siguientes temas se discuten/tratan en este artículo:

API de C# para comparar archivos DOCX

Para comparar dos o más archivos DOCX, usaré GroupDocs.Comparison for .NET API. Compara dos o más documentos y descubre los cambios en el contenido de los documentos para palabras, párrafos y caracteres. Como resultado, produce un documento de comparación que destaca las diferencias y enumera un resumen de las diferencias. También le permite detectar cambios y diferencias en el estilo de texto entre formatos de documentos similares. La API admite la comparación de todos los formatos de documentos estándar de la industria, como PDF, HTML, Word, Excel, PowerPoint, correos electrónicos de Outlook, diagramas de Visio, OpenDocument, AutoCAD e imágenes.

Puede descargar la DLL de la API o instalarla mediante NuGet.

Install-Package GroupDocs.Comparison

Compara dos o más documentos de Word usando C#

Puede comparar dos o más documentos de Word mediante programación siguiendo los sencillos pasos que se indican a continuación:

  1. Cree una instancia de la clase Comparador con la ruta del archivo DOCX de origen
  2. Llame al método Add() con el archivo DOCX de destino para agregarlo a la comparación
  3. Repita el paso anterior para agregar más archivos en comparación
  4. Llame al método Compare() con la ruta del archivo de salida

El siguiente ejemplo de código muestra cómo comparar dos o más documentos de Word y destaca las diferencias con C#.

// inicializar comparador
Comparer comparer = new Comparer("C:\\Files\\source.docx");

// agregar archivo de destino para comparar
comparer.Add("C:\\Files\\target.docx");

// comparar y guardar diferencias
comparer.Compare("C:\\Files\\result.docx");
Archivos DOCX de origen y destino

Archivos DOCX de origen y destino

Compara dos o más documentos de Word usando C#

Compara dos o más documentos de Word usando C#

El documento resultante también incluye una página de resumen al final del documento que muestra el resumen de todos los cambios encontrados en la comparación.

La clase Comparador es la clase principal que le permite controlar y ejecutar el proceso de comparación. Proporciona varios métodos para comparar dos o más documentos. El método Add() de esta clase agrega un archivo al proceso de comparación. Puede agregar fácilmente varios archivos a la comparación utilizando el método Add() como se muestra a continuación:

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

El método Compare() de la clase Comparer compara los documentos de origen y de destino. Este método resalta las diferencias y guarda los resultados en la ruta del archivo proporcionada como parámetro de entrada.

Compara documentos de Word usando Stream en C#

Puede comparar dos o más documentos de Word utilizando FileStream siguiendo los pasos que se detallan a continuación:

  1. Leer archivo fuente en un objeto Stream
  2. Leer el archivo de destino en otro objeto Stream
  3. Cree una instancia de la clase Comparer con el objeto Stream de origen
  4. Llame al método Add() con el objeto Stream de destino para agregarlo a la comparación
  5. Llame al método Compare() con la ruta del archivo de salida

El siguiente ejemplo de código muestra cómo comparar documentos de Word mediante FileStream en C#.

// leer archivos de origen y de destino
using (Stream sourceStream = File.OpenRead("C:\\Files\\source.docx"))
using (Stream targetStream = File.OpenRead("C:\\Files\\target.docx"))
{
    // inicializar comparador
    using (Comparer comparer = new Comparer(sourceStream))
    {
        // agregue el flujo de archivos de destino para comparar
        comparer.Add(targetStream);

        // comparar y guardar diferencias
        comparer.Compare(File.Create("C:\\Files\\result.docx"));
    }
}

Obtener Texto de los Cambios usando C#

Puede obtener el texto de los cambios encontrados en la comparación de documentos de Word mediante programación siguiendo los sencillos pasos que se detallan a continuación:

  1. Cree una instancia de la clase Comparador con la ruta del archivo DOCX de origen
  2. Llame al método Add() con el archivo DOCX de destino para agregarlo a la comparación
  3. Repita el paso anterior para agregar más archivos en comparación
  4. Llame al método Comparar()
  5. Llame al método GetChanges() para obtener los detalles de los cambios
  6. Mostrar los cambios

El siguiente ejemplo de código muestra cómo obtener el texto de los cambios mediante C#.

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx");

// agregar archivo de destino para comparar
compararr.Add("C:\\Files\\target.docx");

// comparar
compararr.Compare();

// obtener cambios
ChangeInfo[] changes = compararr.GetChanges();

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

// mostrar cambios
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.

Puede obtener una lista de cambios entre los archivos de origen y de destino llamando al método GetChanges() de la clase Comparer. Devuelve una lista de objetos ChangeInfo. La clase ChangeInfo representa información sobre los cambios y proporciona varias propiedades para obtener detalles de los cambios, como Texto, Tipo, etc.

Comparación de propiedades de documentos usando C#

Puede comparar las propiedades integradas y personalizadas y las propiedades variables de los documentos de Word mediante programación siguiendo los pasos que se indican a continuación:

  1. Cree una instancia de la clase Comparador con la ruta del archivo DOCX de origen
  2. Llame al método Add() con el archivo DOCX de destino para agregarlo a la comparación
  3. Repita el paso anterior para agregar más archivos en comparación
  4. Cree una instancia de CompareOptions
  5. Establezca CompareVariableProperty en verdadero
  6. Establezca CompareDocumentProperty en verdadero
  7. Llame al método Compare() con la ruta del archivo de salida y CompareOptions

El siguiente ejemplo de código muestra cómo comparar las propiedades de los documentos mediante C#.

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx");

// agregar archivo de destino para comparar
compararr.Add("C:\\Files\\target.docx");

// definir opciones de comparación
CompareOptions options = new CompareOptions();
options.CompareVariableProperty = true; // activate the comparison of variable properties
options.CompareDocumentProperty = true; // activate the comparison of built and custom properties

// comparar
compararr.Compare("C:\\Files\\result.docx", options);
Comparación de propiedades de documentos usando C#

Comparación de propiedades de documentos usando C#

Puede mejorar su proceso de comparación aplicando varias opciones de comparación. Para este propósito, la clase CompareOptions permite configurar varias opciones de comparación para lograr resultados específicos. CompareDocumentProperty de esta clase le permite activar la comparación de propiedades integradas y personalizadas en formato de Word. El CompareVariableProperty permite activar la comparación de propiedades de variables en formato Word.

Compare documentos de Word protegidos con contraseña usando C#

Puede comparar dos o más documentos de Word protegidos con contraseña mediante programación siguiendo los pasos que se indican a continuación:

  1. Crear una instancia de la clase LoadOptions
  2. Proporcione la contraseña para el archivo de origen
  3. Cree una instancia de la clase Comparer con la ruta del archivo DOCX de origen y LoadOptions
  4. Llame al método Add() con la ruta del archivo DOCX de destino y la instancia de LoadOptions con contraseña
  5. Repita el paso anterior para agregar más archivos en comparación
  6. Llame al método Compare() con la ruta del archivo de salida

El siguiente ejemplo de código muestra cómo comparar documentos de Word protegidos con contraseña mediante C#.

// definir las opciones de carga para el archivo fuente
LoadOptions sourceLoadOptions = new LoadOptions() { Password = "1234" };

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx", sourceLoadOptions);

// agregar archivo de destino para comparar
compararr.Add("C:\\Files\\target.docx", new LoadOptions() { Password = "5678" });

// comparar
compararr.Compare("C:\\Files\\result.docx");

La clase LoadOptions le permite especificar opciones adicionales mientras carga un documento. Proporciona las siguientes propiedades para especificar:

  • FontDirectories — Lista de directorios de fuentes para cargar.
  • LoadText: indica que las cadenas pasadas son texto de comparación, no rutas de archivo (solo para comparación de texto).
  • Contraseña — Contraseña del documento.

Comparar marcadores en documentos de Word usando C#

Puede comparar los marcadores disponibles en documentos de Word mediante programación siguiendo los pasos que se detallan a continuación:

  1. Cree una instancia de la clase Comparador con la ruta del archivo DOCX de origen
  2. Llame al método Add() con el archivo DOCX de destino para agregarlo a la comparación
  3. Repita el paso anterior para agregar más archivos en comparación
  4. Cree una instancia de CompareOptions
  5. Establezca CompareBookmarks en verdadero
  6. Llame al método Compare() con la ruta del archivo de salida y CompareOptions

El siguiente ejemplo de código muestra cómo comparar marcadores en documentos de Word usando C#.

// inicializar comparador
Comparer compararr = new Comparer("C:\\Files\\source.docx");

// agregar archivo de destino para comparar
compararr.Add("C:\\Files\\target.docx");

// definir opciones de comparación
CompareOptions compararOptions = new CompareOptions();
compararOptions.CompareBookmarks = true; // comparar bookmarks

// comparar
compararr.Compare("C:\\Files\\result.docx", compararOptions);
Comparar marcadores en documentos de Word usando C#

Comparar marcadores en documentos de Word usando C#

La propiedad CompareBookmarks le permite comparar los marcadores disponibles en los documentos de origen y de destino.

Obtenga una licencia gratis

Puede probar la API sin limitaciones de evaluación solicitando una licencia temporal gratuita.

Conclusión

En este artículo, ha aprendido cómo comparar dos o más documentos de Word y resaltar las diferencias usando C#. También aprendió cómo obtener la lista de cambios resaltados. Además, ha aprendido a comparar marcadores en documentos de Word mediante programación. Además, ha aprendido a comparar documentos de Word protegidos con contraseña usando C#. Puede obtener más información sobre GroupDocs.Comparison para la API de .NET utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.

Ver también