Confrontare i fogli di lavoro Excel programmaticamente è una necessità frequente quando è necessario rilevare modifiche ai dati, verificare revisioni o generare report. GroupDocs.Comparison Cloud SDK for .NET fornisce una potente libreria basata su REST che semplifica il confronto dei file Excel tramite REST in C#. Questa guida ti accompagna nel caricamento dei file, nella configurazione delle opzioni di confronto, nell’esecuzione del confronto e nel recupero del risultato, con esempi di codice C# e cURL.

Confronta file Excel tramite REST in C# in 5 passaggi

  1. Carica il file XLSX di origine: Utilizza il metodo StorageApi.UploadFile per posizionare sample1.xlsx nell’archivio cloud.
using (var stream1 = new FileStream(localFilePath1, FileMode.Open, FileAccess.Read))
{
    var uploadRequest1 = new UploadFileRequest(remoteFilePath1, stream1);
    storageApi.UploadFile(uploadRequest1);
}
  1. Carica il file XLSX di destinazione: Ripeti il caricamento per sample2.xlsx.
using (var stream2 = new FileStream(localFilePath2, FileMode.Open, FileAccess.Read))
{
    var uploadRequest2 = new UploadFileRequest(remoteFilePath2, stream2);
    storageApi.UploadFile(uploadRequest2);
}
  1. Configura le opzioni di confronto: Crea un oggetto CompareOptions, imposta i percorsi dei file di origine e destinazione, definisci il percorso di output e regola le impostazioni come 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
    }
};

Consulta il riferimento API completo per CompareOptions e Settings al Riferimento API.
4. Esegui il confronto: Chiama CompareApi.CompareDocument con una CompareDocumentRequest.

var compareRequest = new CompareDocumentRequest(compareOptions);
var compareResult = compareApi.CompareDocument(compareRequest);
  1. Scarica il risultato e pulisci: Recupera il file result.xlsx generato, salvalo localmente e, facoltativamente, elimina i file remoti.
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));

Esempio completo di codice: Confronta file Excel tramite REST in C# usando GroupDocs.Comparison

Questo esempio dimostra come caricare due file XLSX, confrontarli e scaricare il risultato evidenziato.

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: Questo esempio di codice dimostra la funzionalità principale. Prima di usarlo nel tuo progetto, assicurati di aggiornare tutti i percorsi dei file e i valori di configurazione per corrispondere al tuo ambiente reale, verifica che tutte le dipendenze richieste siano installate correttamente e testa accuratamente nel tuo ambiente di sviluppo. Se incontri problemi, consulta la documentazione ufficiale o contatta il team di supporto per assistenza.

Chiamare l’API REST di Comparison con cURL

Di seguito è riportato un flusso di lavoro cURL che esegue la stessa operazione senza scrivere codice C#. Sostituisci i valori segnaposto con le tue credenziali effettive e i nomi dei file.

  1. Ottenere un token di accesso
    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. Caricare il file XLSX di origine
    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. Caricare il file XLSX di destinazione
    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. Eseguire il confronto
    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. Scaricare il risultato
    curl -X GET "https://api.groupdocs.cloud/v2.0/storage/file/result.xlsx" \
         -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
         -o result.xlsx
    

Per un elenco completo di endpoint e parametri, consultare la documentazione API ufficiale.

Prerequisiti e configurazione

  1. Installa il pacchetto .NET tramite NuGet:
dotnet add package GroupDocs.Comparison-Cloud
  1. Assicurati di avere un account GroupDocs Cloud valido e ottieni il tuo Client Id e Client Secret dalla dashboard.
  2. .NET 6.0 o versioni successive sono richiesti.

Puoi scaricare l’ultima libreria dalla pagina di download.

Regolazione fine delle impostazioni di confronto

L’oggetto Settings all’interno di CompareOptions consente di controllare l’output. Le regolazioni comuni includono:

  • GenerateSummaryPage - aggiunge un foglio riepilogativo con le statistiche delle modifiche.
  • ShowDeletedContent - evidenzia le celle che sono state rimosse.
  • ShowInsertedContent - evidenzia le celle appena aggiunte.

Queste proprietà sono già utilizzate nell’esempio di codice sopra. Per opzioni aggiuntive come la protezione Password o StyleChangeDetection, fare riferimento al Riferimento API.

Conclusion

Confrontare file Excel tramite REST in C# diventa semplice con il GroupDocs.Comparison Cloud SDK for .NET. Seguendo i passaggi, è possibile caricare file XLSX, configurare impostazioni di confronto dettagliate, eseguire il confronto e recuperare una cartella di lavoro di risultato che evidenzia chiaramente le differenze. Ricorda di proteggere le credenziali API, rispettare i limiti di dimensione dei file e utilizzare una licenza temporanea per lo sviluppo. Quando sei pronto per la produzione, acquista una licenza completa dalla pricing page per sbloccare un utilizzo illimitato.

FAQ

  • Come posso confrontare file Excel tramite REST in C# usando GroupDocs.Comparison?
    Utilizza l’SDK per caricare due file XLSX, imposta CompareOptions, chiama CompareDocument e scarica il file risultante. L’intero flusso di lavoro è illustrato nelle sezioni di codice e cURL sopra.

  • Quale metodo di autenticazione richiede l’API REST?
    L’API utilizza OAuth 2.0 con il tuo client‑id e client‑secret per ottenere un token di accesso, che deve essere inviato nell’intestazione Authorization: Bearer per ogni richiesta.

  • Posso personalizzare quali modifiche sono evidenziate nel risultato del confronto?
    Sì. Regola l’oggetto Settings (ad es., GenerateSummaryPage, ShowDeletedContent, ShowInsertedContent) per controllare l’aspetto delle differenze.

  • Una licenza temporanea è sufficiente per i test?
    Una licenza temporanea dalla pagina della licenza temporanea funziona per lo sviluppo e i test. Per le distribuzioni in produzione, è necessario acquisire una licenza completa.

Read More