Come confrontare file XLSX in C# usando gli stream – Guida completa

Confrontare manualmente i fogli di calcolo Excel è noioso e soggetto a errori, specialmente quando è necessario convalidare grandi report finanziari o set di dati di audit. In questo tutorial scoprirai how to compare xlsx file in modo efficiente con GroupDocs.Comparison per .NET usando l’elaborazione basata su stream. Ti guideremo passo passo, spiegheremo perché gli stream sono importanti e ti forniremo consigli pratici da copiare nei tuoi progetti.

Risposte rapide

  • Quale libreria gestisce il confronto di Excel? GroupDocs.Comparison for .NET.
  • Posso confrontare i file senza salvarli su disco? Yes—use streams to work directly with in‑memory data.
  • È necessaria una licenza per la produzione? A commercial license is mandatory; a free trial is available.
  • Quali versioni .NET sono supportate? .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
  • Quanti formati Excel sono coperti? Over 20, including .xls, .xlsx, .xlsm, and .csv.

Cos’è “how to compare xlsx”?

“How to compare xlsx” si riferisce al rilevamento programmatico delle differenze tra due file di cartelle di lavoro Excel. GroupDocs.Comparison per .NET legge ogni cartella di lavoro, valuta le modifiche a livello di cella e genera un documento di risultato evidenziato che mostra inserimenti, cancellazioni e modifiche. Il confronto evidenzia le celle, le righe e i fogli modificati, rendendo facile rivedere le differenze a colpo d’occhio.

Perché usare il confronto basato su stream?

L’elaborazione con stream riduce la pressione sulla memoria leggendo i file a blocchi invece di caricare l’intera cartella di lavoro in RAM. GroupDocs.Comparison può gestire 50 + formati di input e output e processare fogli di calcolo con centinaia di pagine mantenendo l’uso di memoria di picco sotto i 100 MB su hardware server tipico. Questo lo rende ideale per servizi web, micro‑servizi e lavori batch on‑premise.

Prerequisiti

  1. GroupDocs.Comparison for .NET – scarica dal sito ufficiale qui.
  2. Ambiente di sviluppo C# – Visual Studio 2022 o qualsiasi IDE che supporti .NET 6+.
  3. File Excel – due cartelle di lavoro .xlsx che desideri confrontare.
  4. Comprensione di base degli stream – i concetti di System.IO.Stream sono usati in tutto l’esempio.

Importa gli spazi dei nomi

Gli spazi dei nomi seguenti ti danno accesso al motore di confronto e alle utility per gli stream.

Lo spazio dei nomi GroupDocs.Comparison contiene le classi core di confronto, mentre System.IO fornisce i tipi FileStream e MemoryStream necessari per la gestione degli stream.

Guida all’implementazione passo‑passo

Come influisce l’uso degli stream sulle prestazioni?

Carica ogni cartella di lavoro con File.OpenRead() e passa lo stream risultante direttamente al comparatore. Questo approccio evita file temporanei, riduce il tempo I/O fino al 30 % su storage SSD e mantiene il processo interamente in memoria, il che è cruciale per API web ad alto throughput.

Passo 1: Inizializza le variabili di output

Definisci dove verrà memorizzato il risultato del confronto. Usare Path.Combine() garantisce il separatore di directory corretto su Windows, Linux o macOS.

Pro Tip: In produzione, scrivi l’output in una cartella temporanea o in un bucket di storage cloud per mantenere pulita la directory dell’applicazione.

Passo 2: Crea l’oggetto Comparer

La classe Comparer è il componente centrale che orchestra il confronto di due o più documenti.

Crea un’istanza di Comparer aprendo la cartella di lavoro sorgente con File.OpenRead(). L’istruzione using garantisce che lo stream del file venga chiuso automaticamente, evitando perdite di handle del file.

Passo 3: Aggiungi il documento target

Aggiungi la seconda cartella di lavoro al comparatore. Puoi concatenare ulteriori target se devi confrontare un file master con diverse varianti — utile per report regionali o scenari di version‑control.

Passo 4: Esegui il confronto

Invoca il metodo Compare per generare il documento diff. Il risultato viene scritto in un nuovo stream creato con File.Create(). Il file di output evidenzia tutte le celle, le righe e i fogli modificati, rendendo la revisione visiva semplice.

Il metodo Compare esegue il confronto e restituisce il documento risultato come stream.

Passo 5: Visualizza il messaggio di successo

Dopo che il confronto è terminato, registra un conciso messaggio di successo che includa il percorso di output. In un’API reale, restituiresti lo stream al chiamante o lo memorizzeresti in cloud storage per un recupero successivo.

Problemi comuni e risoluzione

  • Errori di file in uso: Assicurati che nessun altro processo (incluso Excel) abbia il file aperto. Gli stream aperti con File.OpenRead() acquisiscono un lock di condivisione in sola lettura, il che mitiga la maggior parte dei conflitti.
  • Picchi di memoria con file enormi: Per cartelle di lavoro superiori a 100 MB, abilita il flag ComparerOptionsEnableMemoryOptimization (se disponibile) e monitora la memoria privata del processo.
  • Confronti di formati misti: GroupDocs.Comparison supporta coppie di formati coerenti; evita di confrontare un file .xls con un .xlsx nella stessa operazione per prevenire incongruenze di layout.
  • Posizionamento dello stream: Quando riutilizzi uno stream, reimpostalo sempre con stream.Seek(0, SeekOrigin.Begin) prima di passarlo al comparatore.

Gestione robusta degli errori: Cattura ComparisonException per cartelle di lavoro corrotte e registra il nome del file per indagini successive.
ComparisonException è lanciata da GroupDocs.Comparison quando il documento di input è corrotto o utilizza un formato non supportato.

Prestazioni e migliori pratiche

  • Rilascia gli stream prontamente: Avvolgi ogni FileStream in un blocco using.
  • Elaborazione batch: Usa Parallel.ForEach con comparatori asincroni per gestire più coppie di file contemporaneamente, ma limita il grado di parallelismo per evitare sovraccarico CPU.
  • Gestione robusta degli errori: Cattura ComparisonException per cartelle di lavoro corrotte e registra il nome del file per indagini successive.
  • Convalida gli stream di input: Verifica il tipo MIME o l’intestazione del file prima del confronto per rifiutare subito upload non‑Excel.

ComparerOptions fornisce impostazioni di configurazione per il processo di confronto, come l’ottimizzazione della memoria e i controlli di sensibilità.

Scenari di utilizzo avanzati

  • Confronto BLOB di database: Recupera il BLOB Excel da SQL Server, avvolgilo in un MemoryStream e passalo direttamente al comparatore — non sono necessari file temporanei.
  • Integrazione con storage cloud: Usa l’SDK Azure Blob Storage per ottenere un BlobStream e passarlo al comparatore, abilitando flussi di lavoro completamente serverless.
  • Endpoint API in tempo reale: Esporre un endpoint POST che accetta due file multipart/form‑data, li confronta al volo e restituisce il diff come stream scaricabile.

Conclusione

Sfruttando l’API basata su stream di GroupDocs.Comparison, ottieni un modo efficiente in termini di memoria, sicuro e scalabile per confrontare file XLSX in C#. Questa guida ha coperto tutto, dall’installazione agli scenari cloud avanzati, fornendoti una solida base per integrare il confronto di fogli di calcolo in qualsiasi soluzione .NET.

Domande frequenti

Q: GroupDocs.Comparison per .NET è compatibile con tutti i formati Excel?
A: Sì, supporta oltre 20 formati correlati a Excel, inclusi .xls, .xlsx, .xlsm e .csv, garantendo ampia compatibilità tra cartelle di lavoro legacy e moderne.

Q: Posso personalizzare lo stile visivo del risultato del confronto?
A: Assolutamente. L’API consente di impostare i colori di evidenziazione, modificare lo stile del bordo e regolare il livello di sensibilità delle modifiche tramite ComparisonOptions.

Q: Devo avere una licenza commerciale per l’uso in produzione?
A: È necessaria una licenza valida di GroupDocs.Comparison per qualsiasi distribuzione commerciale. Puoi ottenerne una qui.

Q: È disponibile una versione di prova gratuita?
A: Sì, puoi scaricare una versione di prova completamente funzionale qui per valutare tutte le funzionalità prima dell’acquisto.

Q: Dove posso trovare supporto della community?
A: Il forum di GroupDocs.Comparison qui è un luogo attivo dove porre domande e condividere soluzioni con altri sviluppatori.


Last Updated: 2026-06-21
Tested With: GroupDocs.Comparison 23.10 for .NET
Author: GroupDocs

using System;
using System.IO;
string outputDirectory = "Your Document Directory";
string outputFileName = Path.Combine(outputDirectory, "result.xlsx");
using (Comparer comparer = new Comparer(File.OpenRead("source.xlsx")))
comparer.Add(File.OpenRead("target.xlsx"));
comparer.Compare(File.Create(outputFileName));
Console.WriteLine($"\nDocuments compared successfully.\nCheck output in {outputDirectory}.");

Tutorial correlati