Documentvergelijking C# Tutorial – Meerdere Word-documenten programmatically vergelijken
Heb je ooit handmatig Word-documenten regel voor regel vergeleken, op zoek naar elke wijziging? Je bent niet de enige. In deze gids leer je hoe je meerdere Word-documenten efficiënt kunt vergelijken, of je nu juridische contracten beoordeelt, revisies bijhoudt of samenwerkende bewerkingsprojecten beheert. Het automatiseren van dit proces met GroupDocs.Comparison voor .NET bespaart tijd, vermindert fouten en genereert professionele vergelijkingsrapporten in slechts een paar regels C#-code.
Wat je in deze tutorial onder de knie krijgt:
- Hoe je Word-documenten vergelijkt met streams (perfect voor in de database opgeslagen bestanden)
- GroupDocs.Comparison opzetten in je C#-project vanaf nul
- Vergelijkingsresultaten aanpassen met professionele styling
- Meerdere documentvergelijkingen efficiënt afhandelen
- Veelvoorkomende problemen oplossen en prestatie‑optimalisatie
- Praktische toepassingen die je uren handmatig werk besparen
Snelle antwoorden
- Welke bibliotheek moet ik gebruiken? GroupDocs.Comparison for .NET
- Kan ik meerdere Word-documenten tegelijk vergelijken? Ja – voeg zoveel doel‑streams toe als nodig.
- Hoe markeer ik verschillen in Word? Gebruik
CompareOptionsmet aangepasteStyleSettings. - Heb ik een licentie nodig voor ontwikkeling? Een gratis proefversie werkt voor leren; een tijdelijke licentie verwijdert watermerken.
- Is async‑ondersteuning beschikbaar? Ja – je kunt de vergelijking wikkelen in
Task.Runvoor niet‑blokkende aanroepen.
Waarom meerdere Word-documenten vergelijken?
Het vergelijken van meer dan twee versies tegelijk geeft je een enkel, uniform overzicht van alle wijzigingen. Dit is vooral waardevol wanneer meerdere beoordelaars hetzelfde contract bewerken of wanneer je verschillende concept‑voorstellen moet auditten. In plaats van afzonderlijke vergelijkingsrapporten te beheren, voegt GroupDocs.Comparison elke afwijking samen in één document, waardoor toevoegingen, verwijderingen en aanpassingen gemakkelijk te herkennen zijn.
Hoe verschillen markeren in Word-documenten
GroupDocs.Comparison stelt je in staat aangepaste opmaak te definiëren voor ingevoegde, verwijderde of gewijzigde tekst. Door InsertedItemStyle, DeletedItemStyle en ModifiedItemStyle in te stellen, kun je het rapport laten overeenkomen met de huisstijl van je organisatie of simpelweg de leesbaarheid verbeteren. We lopen een basisvoorbeeld door waarin ingevoegde tekst geel wordt gemarkeerd.
Vereisten
- GroupDocs.Comparison Library (v25.4.0 of later) – werkt met .NET Framework 4.6.1+ en .NET Core 2.0+
- Visual Studio (een recente versie)
- Basis C#-kennis – je moet vertrouwd zijn met het maken van een console‑applicatie
- Een paar voorbeeld‑Word‑bestanden om de vergelijking te testen
GroupDocs.Comparison opzetten en laten draaien
De bibliotheek installeren (De gemakkelijke manier)
Optie 1: Package Manager Console
Install-Package GroupDocs.Comparison -Version 25.4.0
Optie 2: .NET CLI (Mijn persoonlijke favoriet)
dotnet add package GroupDocs.Comparison --version 25.4.0
Licenties eenvoudig gemaakt
- Gratis proefversie: Volledige functionaliteit met kleine watermerken – ideaal om te leren.
- Tijdelijke licentie: Verwijdert watermerken voor demo’s; vraag een gratis tijdelijke sleutel aan bij GroupDocs.
- Productielicentie: Koop een volledige licentie op GroupDocs Purchase.
Je eerste vergelijking (Hello World‑stijl)
using System;
using GroupDocs.Comparison;
namespace DocumentComparisonApp
{
class Program
{
static void Main(string[] args)
{
// Initialize comparer with a source document stream
using (Comparer comparer = new Comparer(File.OpenRead("SOURCE_WORD.docx")))
{
// Add target documents to compare
comparer.Add("TARGET_WORD.docx");
Console.WriteLine("Documents added for comparison.");
}
}
}
}
Dit fragment maakt een Comparer‑object aan, laadt een bron‑document en voegt één doel‑document toe. Beschouw het als het opzetten van een “voor‑en‑na” vergelijking.
De volledige implementatie – Stap voor stap
Stap 1: De basis opzetten
string documentDirectory = "YOUR_DOCUMENT_DIRECTORY";
using (Comparer comparer = new Comparer(File.OpenRead(System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx"))))
{
// We'll build on this foundation
}
Wat gebeurt er? We maken een Comparer‑instantie aan met een stream in plaats van een bestandspad, waardoor we flexibel kunnen werken met documenten die in databases zijn opgeslagen of via een netwerk worden ontvangen.
Stap 2: Meerdere doel‑documenten toevoegen
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET_WORD.docx")));
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET2_WORD.docx")));
comparer.Add(File.OpenRead(System.IO.Path.Combine(documentDirectory, "TARGET3_WORD.docx")));
Nu kun je meerdere Word‑documenten in één keer vergelijken. GroupDocs.Comparison voegt alle verschillen op intelligente wijze samen in één resultaatbestand.
Stap 3: Verschillen laten opvallen (Aangepaste styling)
CompareOptions compareOptions = new CompareOptions()
{
InsertedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Yellow // Highlight inserted text in yellow
}
};
Aangepaste styling markeert verschillen in Word en maakt het rapport makkelijker leesbaar voor belanghebbenden.
Stap 4: De vergelijking uitvoeren en resultaten opslaan
string outputDirectory = "YOUR_OUTPUT_DIRECTORY";
string outputFileName = System.IO.Path.Combine(outputDirectory, "RESULT_WORD.docx");
comparer.Compare(File.Create(outputFileName), compareOptions);
De enkele regel hierboven voert de vergelijking uit over alle doelen en schrijft een verzorgd resultaatdocument. Omdat we File.Create() gebruiken, kun je de stream vervangen door een database‑ of cloud‑opslaglocatie.
Veelvoorkomende problemen en hoe ze op te lossen
Probleem: “File Not Found”-fouten
string sourcePath = System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx");
if (!File.Exists(sourcePath))
{
throw new FileNotFoundException($"Source document not found: {sourcePath}");
}
Controleer altijd paden voordat je streams opent.
Probleem: Geheugenproblemen met grote documenten
// Don't do this - keeps all streams in memory
// comparer.Add(File.OpenRead(doc1));
// comparer.Add(File.OpenRead(doc2));
// Do this instead - process one at a time
using (var stream1 = File.OpenRead(doc1))
{
comparer.Add(stream1);
// Stream is disposed automatically here
}
Maak streams direct vrij om het geheugenverbruik laag te houden.
Probleem: Onverwachte vergelijkingsresultaten
CompareOptions options = new CompareOptions()
{
CompareBookmarks = false, // Ignore bookmark differences
CompareComments = false, // Ignore comment differences
CompareFields = false // Ignore field differences
};
Pas de gevoeligheidsinstellingen aan om elementen die niet relevant zijn voor je beoordeling te negeren.
Asynchrone vergelijking voor web‑apps
public async Task<string> CompareDocumentsAsync(Stream source, Stream[] targets)
{
using (var comparer = new Comparer(source))
{
foreach (var target in targets)
{
comparer.Add(target);
}
// Perform comparison on background thread
return await Task.Run(() =>
{
var output = new MemoryStream();
comparer.Compare(output, compareOptions);
return Convert.ToBase64String(output.ToArray());
});
}
}
Wikkel de vergelijking in Task.Run om UI‑threads responsief te houden.
Tips voor prestatie‑optimalisatie
- Dispose streams altijd (
using‑statements). - Verwerk documenten opeenvolgend wanneer mogelijk.
- Overweeg async‑patronen voor web‑API’s.
- Schaal met wachtrijen voor scenario’s met hoog volume.
- Houd de bibliotheek up‑to‑date om te profiteren van prestatieverbeteringen.
Veelgestelde vragen
Q: Hoe gaat GroupDocs.Comparison om met verschillende documentformaten?
A: Het ondersteunt Word, PDF, Excel, PowerPoint en nog veel meer. De API blijft consistent over formaten heen, zodat dezelfde code werkt voor PDF’s, DOCX, enz.
Q: Kan ik documenten met verschillende lay-outs of structuren vergelijken?
A: Ja. De engine vergelijkt inhoud semantisch, niet alleen teken‑voor‑teken, waardoor structurele wijzigingen soepel worden afgehandeld.
Q: Wat als de documenten met een wachtwoord beveiligd zijn?
A: Je kunt het wachtwoord opgeven bij het openen van de stream; de bibliotheek zal het bestand voor de vergelijking ontsleutelen.
Q: Is er een limiet aan hoeveel documenten ik tegelijk kan vergelijken?
A: De praktische limiet is het systeemgeheugen. Op een typische ontwikkelmachine werkt het goed om 5‑10 grote documenten tegelijk te vergelijken.
Q: Hoe kan ik dit integreren in een CI/CD‑pipeline?
A: Wikkel de vergelijkingslogica in een console‑applicatie of een web‑API, en roep deze vervolgens aan vanuit je buildscripts om automatisch documentwijzigingen te detecteren.
Q: Ondersteunt de bibliotheek meertalige documenten?
A: Absoluut. Het verwerkt rechts‑naar‑links‑talen zoals Arabisch en Hebreeuws, evenals Unicode‑tekens.
Aanvullende bronnen voor verdieping
- Documentation – Uitgebreide API‑referentie en geavanceerde tutorials
- API Reference – Gedetailleerde methode‑ en eigenschapsdocumentatie
- Download Center – Laatste releases en changelogs
- Community Forums – Maak contact met andere ontwikkelaars en krijg hulp van GroupDocs‑experts
Laatst bijgewerkt: 2026-04-14
Getest met: GroupDocs.Comparison 25.4.0 voor .NET
Auteur: GroupDocs