Comparar hojas de cálculo de Excel de forma programática es un requisito frecuente cuando necesitas detectar cambios en los datos, auditar revisiones o generar informes. GroupDocs.Comparison Cloud SDK for .NET proporciona una potente biblioteca basada en REST que facilita la comparación de archivos Excel a través de REST en C#. Esta guía te guía a través de la carga de archivos, la configuración de opciones de comparación, la ejecución de la comparación y la obtención del resultado, con ejemplos de código en C# y cURL.

Comparar archivos Excel mediante REST en C# en 5 pasos

  1. Cargar el archivo XLSX de origen: Utilice el método StorageApi.UploadFile para colocar sample1.xlsx en el almacenamiento en la nube.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
    var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
    storageApi.UploadFile(uploadRequest1);
}
  1. Cargar el archivo XLSX de destino: Repita la carga para sample2.xlsx.
using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
{
    var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
    storageApi.UploadFile(uploadRequest2);
}
  1. Configurar opciones de comparación: Cree un objeto CompareOptions, establezca las rutas de archivo de origen y destino, defina la ruta de salida y ajuste configuraciones como GenerateSummaryPage.
var compareOptions = new CompareOptions
{
    SourceFile = new FileInfo { FilePath = remoteFilePath1 },
    TargetFiles = new List<FileInfo>
    {
        new FileInfo { FilePath = remoteFilePath2 }
    },
    OutputPath = remoteResultPath,
    Settings = new Settings
    {
        GenerateSummaryPage = true,
        ShowDeletedContent = true,
        ShowInsertedContent = true
    }
};

Consulte la referencia completa de la API para CompareOptions y Settings en la Referencia de API.
4. Ejecutar la comparación: Llame a CompareApi.CompareDocument con un CompareDocumentRequest.

var compareRequest = new CompareDocumentRequest(compareOptions);
var compareResult = compareApi.CompareDocument(compareRequest);
  1. Descargar el resultado y limpiar: Recupere el result.xlsx generado, guárdelo localmente y, opcionalmente, elimine los archivos remotos.
var downloadRequest = new DownloadFileRequest(compareResult.Path);
using (var resultStream = storageApi.DownloadFile(downloadRequest))
using (var fileStream = new FileStream(localResultPath, FileMode.Create, FileAccess.Write))
{
    resultStream.CopyTo(fileStream);
}

// Clean up
storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath1));
storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath2));
storageApi.DeleteFile(new DeleteFileRequest(remoteResultPath));

Ejemplo de código completo: Comparar archivos Excel mediante REST en C# usando GroupDocs.Comparison

Este ejemplo muestra cómo cargar dos archivos XLSX, compararlos y descargar el resultado resaltado.

using System;
using System.Collections.Generic;
using System.IO;
using GroupDocs.Comparison.Cloud.Sdk.Api;
using GroupDocs.Comparison.Cloud.Sdk.Client;
using GroupDocs.Comparison.Cloud.Sdk.Model;
using GroupDocs.Comparison.Cloud.Sdk.Model.Requests;

namespace CompareExcelFilesExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Configuration – replace with your actual credentials
            var config = new Configuration
            {
                ClientId = "YOUR_CLIENT_ID",
                ClientSecret = "YOUR_CLIENT_SECRET"
            };

// APIs
            var compareApi = new CompareApi(config);
            var storageApi = new StorageApi(config);

// Local and remote file names
            string localFilePath1 = "sample1.xlsx";
            string localFilePath2 = "sample2.xlsx";
            string remoteFilePath1 = "sample1.xlsx";
            string remoteFilePath2 = "sample2.xlsx";
            string remoteResultPath = "result.xlsx";
            string localResultPath = "result.xlsx";

// Upload first Excel file
            using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
            {
                var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
                storageApi.UploadFile(uploadRequest1);
            }

// Upload second Excel file
            using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
            {
                var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
                storageApi.UploadFile(uploadRequest2);
            }

// Prepare comparison options
            var compareOptions = new CompareOptions
            {
                SourceFile = new FileInfo { FilePath = remoteFilePath1 },
                TargetFiles = new List<FileInfo>
                {
                    new FileInfo { FilePath = remoteFilePath2 }
                },
                OutputPath = remoteResultPath,
                Settings = new Settings
                {
                    // Example: show changes in a new sheet
                    GenerateSummaryPage = true,
                    ShowDeletedContent = true,
                    ShowInsertedContent = true
                }
            };

// Execute comparison
            var compareRequest = new CompareDocumentRequest(compareOptions);
            var compareResult = compareApi.CompareDocument(compareRequest);

// Download the result file
            var downloadRequest = new DownloadFileRequest(compareResult.Path);
            using (var resultStream = storageApi.DownloadFile(downloadRequest))
            using (var fileStream = new FileStream(localResultPath, FileMode.Create, FileAccess.Write))
            {
                resultStream.CopyTo(fileStream);
            }

// Optional: clean up remote files
            storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath1));
            storageApi.DeleteFile(new DeleteFileRequest(remoteFilePath2));
            storageApi.DeleteFile(new DeleteFileRequest(remoteResultPath));

Console.WriteLine("Comparison completed. Result saved to " + localResultPath);
        }
    }
}

Nota: Este ejemplo de código demuestra la funcionalidad principal. Antes de usarlo en su proyecto, asegúrese de actualizar cualquier ruta de archivo y valores de configuración para que coincidan con su entorno real, verifique que todas las dependencias requeridas estén instaladas correctamente y realice pruebas exhaustivas en su entorno de desarrollo. Si encuentra algún problema, consulte la documentación oficial o póngase en contacto con el equipo de soporte para obtener ayuda.

Llamando a la API REST de Comparison con cURL

A continuación se muestra un flujo de trabajo cURL que realiza la misma operación sin escribir código C#. Reemplace los valores de marcador de posición con sus credenciales reales y los nombres de archivo.

  1. Obtener un token de acceso

    curl -X POST "https://api.groupdocs.cloud/v2.0/oauth2/token" \
         -H "Content-Type: application/json" \
         -d '{"client_id":"YOUR_CLIENT_ID","client_secret":"YOUR_CLIENT_SECRET"}'
    
  2. Cargar el archivo XLSX de origen

    curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/sample1.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -H "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" \
         --data-binary "@sample1.xlsx"
    
  3. Cargar el archivo XLSX de destino

    curl -X PUT "https://api.groupdocs.cloud/v2.0/storage/file/sample2.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -H "Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" \
         --data-binary "@sample2.xlsx"
    
  4. Ejecutar la comparación

    curl -X POST "https://api.groupdocs.cloud/v2.0/comparison/compare" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -H "Content-Type: application/json" \
         -d '{
               "source_file": {"file_path": "sample1.xlsx"},
               "target_files": [{"file_path": "sample2.xlsx"}],
               "output_path": "result.xlsx",
               "settings": {
                   "generate_summary_page": true,
                   "show_deleted_content": true,
                   "show_inserted_content": true
               }
             }'
    
  5. Descargar el resultado

    curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/result.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -o result.xlsx
    

Para obtener una lista completa de endpoints y parámetros, consulte la documentación oficial de la API.

Requisitos y Configuración

  1. Instale el paquete .NET a través de NuGet:
dotnet add package GroupDocs.Comparison-Cloud
  1. Asegúrese de tener una cuenta válida de GroupDocs Cloud y obtenga su Client Id y Client Secret desde el panel.
  2. Se requiere .NET 6.0 o posterior.

Puede descargar la última biblioteca desde la página de descarga.

Ajuste fino de la configuración de comparación

El objeto Settings dentro de CompareOptions le permite controlar la salida. Los ajustes comunes incluyen:

  • GenerateSummaryPage - agrega una hoja de resumen con estadísticas de cambios.
  • ShowDeletedContent - resalta las celdas que fueron eliminadas.
  • ShowInsertedContent - resalta las celdas recién añadidas.

Estas propiedades ya se utilizan en el ejemplo de código anterior. Para opciones adicionales, como la protección Password o StyleChangeDetection, consulte la Referencia de API.

Conclusión

Comparar archivos Excel a través de REST en C# se vuelve sencillo con el GroupDocs.Comparison Cloud SDK for .NET. Siguiendo los pasos, puedes cargar archivos XLSX, configurar ajustes de comparación detallados, ejecutar la comparación y obtener un libro de resultados que marca claramente las diferencias. Recuerda asegurar tus credenciales API, respetar los límites de tamaño de archivo y usar una licencia temporal para desarrollo. Cuando estés listo para producción, adquiere una licencia completa desde la página de precios para desbloquear uso ilimitado.

Preguntas frecuentes

  • ¿Cómo comparo archivos Excel mediante REST en C# usando GroupDocs.Comparison?
    Use el SDK para cargar dos archivos XLSX, establezca CompareOptions, llame a CompareDocument y descargue el archivo resultante. El flujo de trabajo completo se ilustra en las secciones de código y cURL anteriores.

  • ¿Qué método de autenticación requiere la API REST?
    La API utiliza OAuth 2.0 con su client‑id y client‑secret para obtener un token de acceso, que debe enviarse en el encabezado Authorization: Bearer en cada solicitud.

  • ¿Puedo personalizar qué cambios se resaltan en el resultado de la comparación?
    Sí. Ajuste el objeto Settings (p. ej., GenerateSummaryPage, ShowDeletedContent, ShowInsertedContent) para controlar la apariencia de las diferencias.

  • ¿Es suficiente una licencia temporal para pruebas?
    Una licencia temporal de la página de licencias temporales funciona para desarrollo y pruebas. Para implementaciones en producción, adquiera una licencia completa.

Leer más