Comment comparer des fichiers XLSX en C# à l’aide de flux – Guide complet
Comparer manuellement des feuilles de calcul Excel est fastidieux et sujet aux erreurs, surtout lorsque vous devez valider de grands rapports financiers ou auditer des ensembles de données. Dans ce tutoriel, vous découvrirez comment comparer xlsx efficacement avec GroupDocs.Comparison pour .NET en utilisant le traitement basé sur les flux. Nous parcourrons chaque étape, expliquerons pourquoi les flux sont importants et vous donnerons des conseils pratiques que vous pourrez copier dans vos propres projets.
Réponses rapides
- Quelle bibliothèque gère la comparaison Excel ? GroupDocs.Comparison for .NET.
- Puis‑je comparer des fichiers sans les enregistrer sur le disque ? Oui—utilisez des flux pour travailler directement avec les données en mémoire.
- Une licence est‑elle requise pour la production ? Une licence commerciale est obligatoire ; un essai gratuit est disponible.
- Quelles versions de .NET sont prises en charge ? .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
- Combien de formats Excel sont couverts ? Plus de 20, y compris .xls, .xlsx, .xlsm et .csv.
Qu’est‑ce que « how to compare xlsx » ?
« how to compare xlsx » désigne la détection programmatique des différences entre deux fichiers classeur Excel. GroupDocs.Comparison pour .NET lit chaque classeur, évalue les changements au niveau des cellules et génère un document de résultat mis en évidence qui montre les insertions, suppressions et modifications. La comparaison met en évidence les cellules, lignes et feuilles modifiées, facilitant ainsi la révision des différences d’un seul coup d’œil.
Pourquoi utiliser la comparaison basée sur les flux ?
Le traitement par flux réduit la pression sur la mémoire en lisant les fichiers par morceaux au lieu de charger l’ensemble du classeur en RAM. GroupDocs.Comparison peut gérer plus de 50 formats d’entrée et de sortie et traiter des feuilles de calcul de plusieurs centaines de pages tout en maintenant l’utilisation maximale de la mémoire en dessous de 100 Mo sur du matériel serveur typique. Cela le rend idéal pour les services web, les micro‑services et les travaux batch sur site.
Prérequis
- GroupDocs.Comparison for .NET – téléchargez depuis le site officiel ici.
- Environnement de développement C# – Visual Studio 2022 ou tout IDE supportant .NET 6+.
- Fichiers Excel – deux classeurs
.xlsxque vous souhaitez comparer. - Compréhension de base des flux – les concepts
System.IO.Streamsont utilisés tout au long de l’exemple.
Importer les espaces de noms
Les espaces de noms suivants vous donnent accès au moteur de comparaison et aux utilitaires de flux.
L’espace de noms GroupDocs.Comparison contient les classes principales de comparaison, tandis que System.IO fournit les types FileStream et MemoryStream nécessaires à la gestion des flux.
Guide d’implémentation étape par étape
Comment l’utilisation des flux affecte‑t‑elle les performances ?
Chargez chaque classeur avec File.OpenRead() et transmettez le flux résultant directement au comparateur. Cette approche évite les fichiers temporaires, réduit le temps d’E/S jusqu’à 30 % sur les SSD, et maintient le processus entièrement en mémoire, ce qui est crucial pour les API web à haut débit.
Étape 1 : Initialiser les variables de sortie
Définissez où le résultat de la comparaison sera stocké. L’utilisation de Path.Combine() garantit le séparateur de répertoire correct sous Windows, Linux ou macOS.
Conseil pro : En production, écrivez la sortie dans un dossier temporaire ou un bucket de stockage cloud afin de garder le répertoire de l’application propre.
Étape 2 : Créer l’objet Comparer
La classe Comparer est le composant central qui orchestre la comparaison de deux documents ou plus.
Créez une instance de Comparer en ouvrant le classeur source avec File.OpenRead(). L’instruction using garantit que le flux de fichier est fermé automatiquement, évitant les fuites de descripteurs de fichiers.
Étape 3 : Ajouter le document cible
Ajoutez le deuxième classeur au comparateur. Vous pouvez chaîner des cibles supplémentaires si vous devez comparer un fichier maître à plusieurs variantes — utile pour les rapports régionaux ou les scénarios de contrôle de version.
Étape 4 : Effectuer la comparaison
Appelez la méthode Compare pour générer le document de différence. Le résultat est écrit dans un nouveau flux créé avec File.Create(). Le fichier de sortie met en évidence toutes les cellules, lignes et feuilles modifiées, rendant la révision visuelle simple.
La méthode Compare exécute la comparaison et renvoie le document résultat sous forme de flux.
Étape 5 : Afficher le message de succès
Après la fin de la comparaison, consignez un message de succès concis incluant le chemin de sortie. Dans une API réelle, vous renverriez le flux à l’appelant ou le stockeriez dans un stockage cloud pour une récupération ultérieure.
Problèmes courants et dépannage
- Erreurs de fichier en cours d’utilisation : Assurez‑vous qu’aucun autre processus (y compris Excel) n’a le fichier ouvert. Les flux ouverts avec
File.OpenRead()acquièrent un verrou de partage en lecture seule, ce qui atténue la plupart des conflits. - Pics de mémoire avec de gros fichiers : Pour les classeurs dépassant 100 Mo, activez le drapeau
ComparerOptionsEnableMemoryOptimization(si disponible) et surveillez la mémoire privée du processus. - Comparaisons de formats mixtes : GroupDocs.Comparison prend en charge des paires de formats cohérents ; évitez de comparer un fichier
.xlsavec un.xlsxdans la même opération afin de prévenir les incohérences de mise en page. - Positionnement du flux : Lors de la réutilisation d’un flux, réinitialisez‑le toujours avec
stream.Seek(0, SeekOrigin.Begin)avant de le passer au comparateur.
Gestion robuste des erreurs : Capturez ComparisonException pour les classeurs corrompus et consignez le nom du fichier pour une enquête ultérieure.ComparisonException est levée par GroupDocs.Comparison lorsque le document d’entrée est corrompu ou utilise un format non pris en charge.
Performances et bonnes pratiques
- Libérez les flux rapidement : Enveloppez chaque
FileStreamdans un blocusing. - Traitement par lots : Utilisez
Parallel.ForEachavec des comparateurs asynchrones pour gérer plusieurs paires de fichiers simultanément, mais limitez le degré de parallélisme pour éviter la surcharge CPU. - Gestion robuste des erreurs : Capturez
ComparisonExceptionpour les classeurs corrompus et consignez le nom du fichier pour une enquête ultérieure. - Validez les flux d’entrée : Vérifiez le type MIME ou l’en‑tête du fichier avant la comparaison afin de rejeter les téléchargements non‑Excel dès le départ.
ComparerOptions fournit des paramètres de configuration pour le processus de comparaison, tels que l’optimisation de la mémoire et les contrôles de sensibilité.
Scénarios d’utilisation avancés
- Comparaison de BLOB de base de données : Récupérez le BLOB Excel depuis SQL Server, encapsulez‑le dans un
MemoryStreamet alimentez‑le directement au comparateur—aucun fichier temporaire requis. - Intégration du stockage cloud : Utilisez le SDK Azure Blob Storage pour obtenir un
BlobStreamet le transmettre au comparateur, permettant des flux de travail entièrement sans serveur. - Point d’accès API en temps réel : Exposez un point d’accès POST qui accepte deux fichiers multipart/form‑data, les compare à la volée et renvoie la différence sous forme de flux téléchargeable.
Conclusion
En tirant parti de l’API basée sur les flux de GroupDocs.Comparison, vous obtenez une méthode efficace en mémoire, sécurisée et extensible pour comparer des fichiers XLSX en C#. Ce guide a couvert tout, de l’installation aux scénarios cloud avancés, vous offrant une base solide pour intégrer la comparaison de feuilles de calcul dans n’importe quelle solution .NET.
Questions fréquentes
Q : GroupDocs.Comparison pour .NET est‑il compatible avec tous les formats Excel ?
R : Oui, il prend en charge plus de 20 formats liés à Excel, y compris .xls, .xlsx, .xlsm et .csv, assurant une large compatibilité avec les classeurs anciens et modernes.
Q : Puis‑je personnaliser le style visuel du résultat de comparaison ?
R : Absolument. L’API vous permet de définir les couleurs de mise en évidence, de changer le style de bordure et d’ajuster le niveau de sensibilité des changements via ComparisonOptions.
Q : Une licence commerciale est‑elle nécessaire pour une utilisation en production ?
R : Une licence valide de GroupDocs.Comparison est requise pour tout déploiement commercial. Vous pouvez en obtenir une ici.
Q : Un essai gratuit est‑il disponible ?
R : Oui, vous pouvez télécharger un essai pleinement fonctionnel ici pour évaluer toutes les fonctionnalités avant d’acheter.
Q : Où puis‑je obtenir du support communautaire ?
R : Le forum GroupDocs.Comparison ici est un lieu actif pour poser des questions et partager des solutions avec d’autres développeurs.
Dernière mise à jour : 2026-06-21
Testé avec : GroupDocs.Comparison 23.10 pour .NET
Auteur : 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}.");