Comparar planilhas do Excel programaticamente é uma necessidade frequente quando você precisa detectar alterações de dados, auditar revisões ou gerar relatórios. GroupDocs.Comparison Cloud SDK for .NET fornece uma poderosa biblioteca baseada em REST que facilita a comparação de arquivos Excel via REST em C#. Este guia orienta você sobre como fazer upload de arquivos, configurar opções de comparação, executar a comparação e recuperar o resultado, com exemplos de código em C# e cURL.

Compare arquivos Excel via REST em C# em 5 etapas

  1. Carregue o arquivo [XLSX] de origem: Use o método StorageApi.UploadFile para colocar sample1.xlsx no armazenamento em nuvem.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
    var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
    storageApi.UploadFile(uploadRequest1);
}
  1. Carregue o arquivo XLSX de destino: Repita o upload para sample2.xlsx.
using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
{
    var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
    storageApi.UploadFile(uploadRequest2);
}
  1. Configure as opções de comparação: Crie um objeto CompareOptions, defina os caminhos dos arquivos de origem e destino, especifique o caminho de saída e ajuste configurações 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 a referência completa da API para CompareOptions e Settings em Referência da API.
4. Execute a comparação: Chame CompareApi.CompareDocument com um CompareDocumentRequest.

var compareRequest = new CompareDocumentRequest(compareOptions);
var compareResult = compareApi.CompareDocument(compareRequest);
  1. Baixe o resultado e faça a limpeza: Recupere o result.xlsx gerado, salve-o localmente e, opcionalmente, exclua os arquivos 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));

Exemplo completo de código: comparar arquivos Excel via REST em C# usando GroupDocs.Comparison

Este exemplo demonstra como fazer upload de dois arquivos XLSX, compará‑los e baixar o resultado destacado.

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 exemplo de código demonstra a funcionalidade principal. Antes de usá‑lo em seu projeto, certifique‑se de atualizar quaisquer caminhos de arquivos e valores de configuração para corresponder ao seu ambiente real, verifique se todas as dependências necessárias estão instaladas corretamente e teste minuciosamente em seu ambiente de desenvolvimento. Se encontrar algum problema, consulte a documentação oficial ou entre em contato com a equipe de suporte para obter assistência.

Chamando a API REST de Comparação com cURL

Abaixo está um fluxo de trabalho cURL que realiza a mesma operação sem escrever código C#. Substitua os valores de espaço reservado pelas suas credenciais reais e pelos nomes dos arquivos.

  1. Obtenha um token de acesso

    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. Carregue o arquivo XLSX de origem

    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. Carregue o arquivo 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. Execute a comparação

    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. Baixe o resultado

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

Para obter uma lista completa de endpoints e parâmetros, veja a documentação oficial da API.

Pré-requisitos e Configuração

  1. Instale o pacote .NET via NuGet:
dotnet add package GroupDocs.Comparison-Cloud
  1. Certifique-se de que possui uma conta válida do GroupDocs Cloud e obtenha seu Client Id e Client Secret no painel.
  2. .NET 6.0 ou posterior é necessário.

Você pode baixar a biblioteca mais recente na página de download.

Ajustando Configurações de Comparação

O objeto Settings dentro de CompareOptions permite controlar a saída. Ajustes comuns incluem:

  • GenerateSummaryPage - adiciona uma planilha de resumo com estatísticas de alterações.
  • ShowDeletedContent - destaca as células que foram removidas.
  • ShowInsertedContent - destaca as células recém adicionadas.

Essas propriedades já são usadas no exemplo de código acima. Para opções adicionais, como proteção Password ou StyleChangeDetection, consulte a Referência da API.

Conclusão

Comparar arquivos Excel via REST em C# torna-se simples com o GroupDocs.Comparison Cloud SDK for .NET. Seguindo as etapas, você pode fazer upload de arquivos XLSX, configurar configurações detalhadas de comparação, executar a comparação e recuperar uma pasta de trabalho de resultado que marca claramente as diferenças. Lembre-se de proteger suas credenciais de API, respeitar os limites de tamanho de arquivo e usar uma licença temporária para desenvolvimento. Quando estiver pronto para produção, adquira uma licença completa na página de preços para desbloquear uso ilimitado.

FAQs

  • Como comparo arquivos Excel via REST em C# usando GroupDocs.Comparison?
    Use o SDK para enviar dois arquivos XLSX, defina CompareOptions, chame CompareDocument e baixe o arquivo resultante. O fluxo completo é ilustrado nas seções de código e cURL acima.

  • Qual método de autenticação a API REST requer?
    A API usa OAuth 2.0 com seu client‑id e client‑secret para obter um token de acesso, que deve ser enviado no cabeçalho Authorization: Bearer para cada requisição.

  • Posso personalizar quais alterações são destacadas no resultado da comparação?
    Sim. Ajuste o objeto Settings (por exemplo, GenerateSummaryPage, ShowDeletedContent, ShowInsertedContent) para controlar a aparência das diferenças.

  • É uma licença temporária suficiente para testes?
    Uma licença temporária da página de licença temporária funciona para desenvolvimento e teste. Para implantações de produção, adquira uma licença completa.

Read More