Documentvergelijking C# tutorial – meerdere Word-documenten programmatisch vergelijken
If you need to vergelijk meerdere Word-documenten quickly and accurately, this tutorial shows you exactly how to do it with GroupDocs.Comparison for .NET. Whether you’re reviewing contracts, tracking revisions, or consolidating drafts from several authors, automating the comparison eliminates manual line‑by‑line checks, reduces human error, and produces a single polished report that highlights every insertion, deletion, and modification.
In deze gids leer je:
- Word‑bestanden laden vanuit streams (ideaal voor in database opgeslagen of cloud‑bestanden)
- GroupDocs.Comparison opzetten in een nieuw C#‑project
- De visuele stijl aanpassen van ingevoegde, verwijderde en gewijzigde tekst
- Vergelijken van elk aantal doel‑documenten in één keer
- Veelvoorkomende valkuilen oplossen en de prestaties optimaliseren voor grote bestanden
- Praktijkvoorbeelden waarbij geautomatiseerde vergelijking uren handmatig werk bespaart
Snelle antwoorden
- Welke bibliotheek moet ik gebruiken? GroupDocs.Comparison voor .NET.
- Kan ik meerdere Word-documenten tegelijk vergelijken? Ja – voeg zoveel doel‑streams toe als nodig.
- Hoe markeer ik verschillen in Word? Configureer
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 – wikkel de vergelijking in
Task.Runvoor niet‑blokkende uitvoering.
Waarom meerdere Word-documenten vergelijken?
Je kunt een enkel uniform overzicht krijgen van alle wijzigingen over elke versie, in plaats van afzonderlijke naast‑elkaar rapporten te beheren. Dit is cruciaal wanneer meerdere beoordelaars hetzelfde contract bewerken, wanneer je verschillende concept‑voorstellen moet auditen, of wanneer je een master‑document wilt genereren dat elke amendement registreert. Door verschillen in één output te combineren, kunnen belanghebbenden direct zien wat is toegevoegd, verwijderd of gewijzigd zonder meerdere bestanden te openen.
Hoe verschillen markeren in Word-documenten
Load the source file, add each target, then apply CompareOptions that specify InsertedItemStyle, DeletedItemStyle, and ModifiedItemStyle. The result is a Word file where insertions appear in yellow, deletions in red strike‑through, and modifications in blue underline, matching your organization’s branding guidelines.
Direct antwoord
GroupDocs.Comparison lets you set visual styles via CompareOptions—you define colors, fonts, and highlight types for inserted, deleted, and modified content, then the engine renders those styles directly into the output Word document. This single configuration step makes differences unmistakable for reviewers.
Vereisten
- GroupDocs.Comparison bibliotheek (v25.4.0 of nieuwer) – compatibel met .NET Framework 4.6.1+, .NET Core 2.0+, .NET 5/6/7.
- Visual Studio (een recente editie) of een vergelijkbare C#‑IDE.
- Basiskennis van C#‑console‑applicaties.
- Een of meer voorbeeld‑
.docx‑bestanden om mee te experimenteren.
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 een klein watermerk—perfect om te leren.
- Tijdelijke licentie: Verwijdert watermerken voor demo’s; vraag een gratis sleutel aan bij GroupDocs.
- Productielicentie: Koop een volledige licentie via GroupDocs Purchase.
Je eerste vergelijking (hello‑world stijl)
Comparer is the core class in GroupDocs.Comparison that orchestrates document loading, comparison, and result generation.
This snippet creates a Comparer object, loads a source document, and adds a single target document. Think of it as setting up a “before and after” comparison.
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.");
}
}
}
}
De volledige implementatie – stap voor stap
Stap 1: de basis opzetten
Comparer is instantiated with a stream instead of a file path, giving you flexibility to work with documents stored in databases or received over a network.
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
}
Stap 2: meerdere doel‑documenten toevoegen
Now you can compare multiple word documents in a single run. GroupDocs.Comparison intelligently merges all differences into one result file.
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")));
Stap 3: verschillen laten opvallen (aangepaste styling)
CompareOptions allows you to specify comparison behavior and visual styling for inserted, deleted, and modified content.StyleSettings defines the visual appearance (color, font, highlight) applied to differences in the output document.
CompareOptions compareOptions = new CompareOptions()
{
InsertedItemStyle = new StyleSettings()
{
FontColor = System.Drawing.Color.Yellow // Highlight inserted text in yellow
}
};
Stap 4: de vergelijking uitvoeren en resultaten opslaan
The single line below performs the comparison across all targets and writes a polished result document. Because we use File.Create(), you could replace the stream with a database or cloud storage destination.
string outputDirectory = "YOUR_OUTPUT_DIRECTORY";
string outputFileName = System.IO.Path.Combine(outputDirectory, "RESULT_WORD.docx");
comparer.Compare(File.Create(outputFileName), compareOptions);
Veelvoorkomende problemen en hoe ze op te lossen
Probleem: “Bestand niet gevonden” fouten
Always verify that the file paths you pass to File.OpenRead (or equivalent) actually exist and are accessible from the running process.
string sourcePath = System.IO.Path.Combine(documentDirectory, "SOURCE_WORD.docx");
if (!File.Exists(sourcePath))
{
throw new FileNotFoundException($"Source document not found: {sourcePath}");
}
Probleem: geheugenproblemen met grote documenten
Dispose streams promptly using using statements. GroupDocs.Comparison processes documents in chunks, so keeping streams open unnecessarily can inflate memory usage.
// 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
}
Probleem: onverwachte vergelijkingsresultaten
Adjust the sensitivity settings in CompareOptions to ignore elements such as header/footer changes, page numbers, or metadata that aren’t relevant to your review.
CompareOptions options = new CompareOptions()
{
CompareBookmarks = false, // Ignore bookmark differences
CompareComments = false, // Ignore comment differences
CompareFields = false // Ignore field differences
};
Asynchrone vergelijking voor web‑apps
Wrap the comparison call in Task.Run to keep UI threads responsive and to avoid blocking ASP.NET request pipelines.
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());
});
}
}
Tips voor prestatie‑optimalisatie
- Dispose streams direct na gebruik (
using‑blokken). - Verwerk documenten sequentieel wanneer mogelijk; parallel verwerken kan het geheugenverbruik verhogen.
- Maak gebruik van async‑patronen voor web‑API’s om de schaalbaarheid te verbeteren.
- Plaats grote batches in een wachtrij met een achtergrond‑worker om throttling van de webserver te voorkomen.
- Blijf up‑to‑date: GroupDocs.Comparison krijgt regelmatig prestatie‑verbeteringen—upgrade naar de nieuwste versie om te profiteren van een lager CPU‑ en geheugen‑verbruik.
Veelgestelde vragen
Q: Hoe gaat GroupDocs.Comparison om met verschillende documentformaten?
A: Het ondersteunt meer dan 30 invoer‑ en uitvoerformaten—including DOCX, PDF, PPTX, XLSX, and HTML—and can compare files up to 500 MB without loading the entire content into memory.
Q: Kan ik documenten vergelijken met verschillende lay-outs of structuren?
A: Ja. De engine vergelijkt inhoud semantisch, zodat structurele wijzigingen soepel worden afgehandeld.
Q: Wat als de documenten met een wachtwoord zijn beveiligd?
A: Lever het wachtwoord 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 vergelijken van 5‑10 grote documenten goed.
Q: Hoe kan ik dit integreren in een CI/CD‑pipeline?
A: Wikkel de vergelijkingslogica in een console‑app of een web‑API, en roep het vervolgens aan vanuit je buildscripts om automatisch documentwijzigingen te detecteren.
Q: Ondersteunt de bibliotheek meertalige documenten?
A: Absoluut. Het ondersteunt rechts‑naar‑links talen zoals Arabisch en Hebreeuws, evenals volledige Unicode‑karaktersets.
Aanvullende bronnen voor verdieping
- Documentatie – uitgebreide API‑referentie en geavanceerde tutorials
- API‑referentie – gedetailleerde methode‑ en eigenschapsdocumentatie
- Downloadcentrum – nieuwste releases en changelogs
- Community‑forums – verbind met andere ontwikkelaars en krijg hulp van GroupDocs‑experts
Laatst bijgewerkt: 2026-10-05
Getest met: GroupDocs.Comparison 25.4.0 for .NET
Auteur: GroupDocs