Hoe XLSX-bestanden vergelijken in C# met streams – Complete gids
Het handmatig vergelijken van Excel‑spreadsheets is tijdrovend en foutgevoelig, vooral wanneer je grote financiële rapporten of audit‑datasets moet valideren. In deze tutorial ontdek je how to compare xlsx bestanden efficiënt met GroupDocs.Comparison voor .NET met stream‑gebaseerde verwerking. We lopen elke stap door, leggen uit waarom streams belangrijk zijn, en geven je praktische tips die je in je eigen projecten kunt gebruiken.
Snelle antwoorden
- Welke bibliotheek behandelt Excel-vergelijking? GroupDocs.Comparison for .NET.
- Kan ik bestanden vergelijken zonder ze op schijf op te slaan? Ja—gebruik streams om direct met in‑memory data te werken.
- Is een licentie vereist voor productie? Een commerciële licentie is verplicht; een gratis proefversie is beschikbaar.
- Welke .NET‑versies worden ondersteund? .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
- Hoeveel Excel‑formaten worden gedekt? Meer dan 20, inclusief .xls, .xlsx, .xlsm en .csv.
Wat is “how to compare xlsx”?
“How to compare xlsx” verwijst naar het programmatisch detecteren van verschillen tussen twee Excel‑werkboekbestanden. GroupDocs.Comparison voor .NET leest elk werkboek, evalueert cel‑niveau wijzigingen, en genereert een gemarkeerd resultaatdocument dat invoegingen, verwijderingen en aanpassingen toont. De vergelijking markeert gewijzigde cellen, rijen en bladen, waardoor het eenvoudig is om verschillen in één oogopslag te beoordelen.
Waarom stream‑gebaseerde vergelijking gebruiken?
Streamverwerking vermindert geheugenbelasting door bestanden in stukken te lezen in plaats van het volledige werkboek in RAM te laden. GroupDocs.Comparison kan meer dan 50 invoer‑ en uitvoerformaten aan en verwerkt spreadsheets van honderden pagina’s terwijl het piekgeheugengebruik onder 100 MB blijft op typische serverhardware. Dit maakt het ideaal voor webservices, micro‑services en on‑premise batch‑taken.
Voorvereisten
- GroupDocs.Comparison for .NET – download van de officiële site here.
- C# ontwikkelomgeving – Visual Studio 2022 of een IDE die .NET 6+ ondersteunt.
- Excel‑bestanden – twee
.xlsxwerkboeken die je wilt vergelijken. - Basisbegrip van streams –
System.IO.Streamconcepten worden door het hele voorbeeld gebruikt.
Namespaces importeren
De volgende namespaces geven je toegang tot de vergelijkingsengine en stream‑hulpmiddelen.
De GroupDocs.Comparison namespace bevat de kernvergelijkingsklassen, terwijl System.IO de FileStream en MemoryStream types levert die nodig zijn voor stream‑afhandeling.
Stapsgewijze implementatie‑gids
Hoe beïnvloedt het gebruik van streams de prestaties?
Laad elk werkboek met File.OpenRead() en geef de resulterende stream direct door aan de comparer. Deze aanpak voorkomt tijdelijke bestanden, verkort I/O‑tijd met tot 30 % op SSD‑opslag, en houdt het proces volledig in het geheugen, wat cruciaal is voor high‑throughput web‑API’s.
Stap 1: Output‑variabelen initialiseren
Definieer waar het vergelijkingsresultaat wordt opgeslagen. Het gebruik van Path.Combine() garandeert de juiste directory‑scheidingsteken op Windows, Linux of macOS.
Pro Tip: Schrijf in productie de output naar een tijdelijke map of cloud‑storage bucket om de toepassingsdirectory schoon te houden.
Stap 2: Comparer‑object maken
De Comparer‑klasse is de centrale component die de vergelijking van twee of meer documenten orkestreert.
Maak een Comparer‑instantie door het bron‑werkboek te openen met File.OpenRead(). De using‑statement garandeert dat de bestandsstream automatisch wordt gesloten, waardoor bestands‑handle‑lekken worden voorkomen.
Stap 3: Doeldocument toevoegen
Voeg het tweede werkboek toe aan de comparer. Je kunt extra doelen ketenen als je één master‑bestand wilt vergelijken met meerdere varianten—handig voor regionale rapportage of versie‑beheerscenario’s.
Stap 4: Vergelijking uitvoeren
Roep de Compare‑methode aan om het diff‑document te genereren. Het resultaat wordt geschreven naar een nieuwe stream gemaakt met File.Create(). Het output‑bestand markeert alle gewijzigde cellen, rijen en bladen, waardoor visuele beoordeling eenvoudig is.
De Compare‑methode voert de vergelijking uit en retourneert het resultaatdocument als een stream.
Stap 5: Succesbericht weergeven
Na afloop van de vergelijking, log een beknopt succesbericht dat het output‑pad bevat. In een real‑world API zou je de stream teruggeven aan de aanroeper of opslaan in cloud‑storage voor later ophalen.
Veelvoorkomende problemen en foutopsporing
- File‑in‑use‑fouten: Zorg ervoor dat geen ander proces (inclusief Excel) het bestand open heeft. Streams geopend met
File.OpenRead()verkrijgen een alleen‑lezen share‑lock, wat de meeste conflicten vermindert. - Geheugenspikes bij enorme bestanden: Voor werkboeken groter dan 100 MB, schakel de
ComparerOptionsEnableMemoryOptimization‑vlag in (indien beschikbaar) en monitor het private geheugen van het proces. - Gemengde formaat‑vergelijkingen: GroupDocs.Comparison ondersteunt consistente formaatparen; vermijd het vergelijken van een
.xls‑bestand met een.xlsx‑bestand in dezelfde bewerking om lay‑out mismatches te voorkomen. - Stream‑positionering: Bij hergebruik van een stream, reset deze altijd met
stream.Seek(0, SeekOrigin.Begin)voordat je deze aan de comparer doorgeeft.
Robuuste foutafhandeling: Vang ComparisonException op voor corrupte werkboeken en log de bestandsnaam voor later onderzoek.ComparisonException wordt gegooid door GroupDocs.Comparison wanneer het invoerdocument corrupt is of een niet‑ondersteund formaat gebruikt.
Prestaties en best practices
- Dispose streams direct: Plaats elke
FileStreamin eenusing‑block. - Batchverwerking: Gebruik
Parallel.ForEachmet async comparers om meerdere bestandspaaren gelijktijdig te verwerken, maar beperk de mate van parallelisme om CPU‑thrashing te voorkomen. - Robuuste foutafhandeling: Vang
ComparisonExceptionop voor corrupte werkboeken en log de bestandsnaam voor later onderzoek. - Valideer invoer‑streams: Controleer het MIME‑type of bestandshouder vóór vergelijking om niet‑Excel uploads vroegtijdig te weigeren.
ComparerOptions biedt configuratie‑instellingen voor het vergelijkingsproces, zoals geheugenoptimalisatie en gevoeligheids‑controles.
Geavanceerde gebruiksscenario’s
- Database BLOB‑vergelijking: Haal de Excel‑BLOB op uit SQL Server, wikkel deze in een
MemoryStream, en voer deze direct aan de comparer—geen tijdelijke bestanden nodig. - Cloud‑storage integratie: Gebruik Azure Blob Storage SDK om een
BlobStreamte verkrijgen en deze aan de comparer door te geven, waardoor volledig serverless workflows mogelijk zijn. - Realtime API‑endpoint: Maak een POST‑endpoint beschikbaar die twee multipart/form‑data bestanden accepteert, ze on‑the‑fly vergelijkt, en de diff retourneert als een downloadbare stream.
Conclusie
Door gebruik te maken van de stream‑gebaseerde API van GroupDocs.Comparison, krijg je een geheugen‑efficiënte, veilige, en schaalbare manier om XLSX‑bestanden te vergelijken in C#. Deze gids behandelde alles van installatie tot geavanceerde cloud‑scenario’s, en biedt je een solide basis om spreadsheet‑vergelijking in elke .NET‑oplossing te integreren.
Veelgestelde vragen
Q: Is GroupDocs.Comparison for .NET compatibel met alle Excel-formaten?
A: Ja, het ondersteunt meer dan 20 Excel‑gerelateerde formaten, inclusief .xls, .xlsx, .xlsm en .csv, waardoor brede compatibiliteit met zowel legacy‑ als moderne werkboeken wordt gegarandeerd.
Q: Kan ik de visuele stijl van het vergelijkingsresultaat aanpassen?
A: Absoluut. De API laat je highlight‑kleuren instellen, de randstijl wijzigen, en het niveau van wijzigingsgevoeligheid aanpassen via ComparisonOptions.
Q: Heb ik een commerciële licentie nodig voor productiegebruik?
A: Een geldige GroupDocs.Comparison‑licentie is vereist voor elke commerciële inzet. Je kunt er een verkrijgen here.
Q: Is er een gratis proefversie beschikbaar?
A: Ja, je kunt een volledig functionele proefversie downloaden here om alle functies te evalueren voordat je koopt.
Q: Waar kan ik community‑ondersteuning krijgen?
A: Het GroupDocs.Comparison‑forum here is een actieve plek om vragen te stellen en oplossingen te delen met andere ontwikkelaars.
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}.");