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
- Cargar el archivo XLSX de origen: Utilice el método
StorageApi.UploadFilepara colocarsample1.xlsxen el almacenamiento en la nube.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
storageApi.UploadFile(uploadRequest1);
}
- 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);
}
- 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 comoGenerateSummaryPage.
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);
- Descargar el resultado y limpiar: Recupere el
result.xlsxgenerado, 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.
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"}'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"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"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 } }'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
- Instale el paquete .NET a través de NuGet:
dotnet add package GroupDocs.Comparison-Cloud
- Asegúrese de tener una cuenta válida de GroupDocs Cloud y obtenga su Client Id y Client Secret desde el panel.
- 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, establezcaCompareOptions, llame aCompareDocumenty 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 encabezadoAuthorization: Beareren cada solicitud.¿Puedo personalizar qué cambios se resaltan en el resultado de la comparación?
Sí. Ajuste el objetoSettings(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.
