Wie man XLSX-Dateien in C# mit Streams vergleicht – Vollständige Anleitung

Das manuelle Vergleichen von Excel‑Tabellen ist mühsam und fehleranfällig, besonders wenn Sie große Finanzberichte oder Auditedaten prüfen müssen. In diesem Tutorial erfahren Sie, wie Sie how to compare xlsx‑Dateien effizient mit GroupDocs.Comparison für .NET unter Verwendung einer stream‑basierten Verarbeitung vergleichen können. Wir gehen jeden Schritt durch, erklären, warum Streams wichtig sind, und geben Ihnen praktische Tipps, die Sie in Ihre eigenen Projekte übernehmen können.

Schnelle Antworten

  • Welche Bibliothek verarbeitet den Excel-Vergleich? GroupDocs.Comparison for .NET.
  • Kann ich Dateien vergleichen, ohne sie auf die Festplatte zu speichern? Ja – verwenden Sie Streams, um direkt mit In‑Memory‑Daten zu arbeiten.
  • Ist für die Produktion eine Lizenz erforderlich? Eine kommerzielle Lizenz ist obligatorisch; ein kostenloser Testzeitraum ist verfügbar.
  • Welche .NET‑Versionen werden unterstützt? .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
  • Wie viele Excel‑Formate werden abgedeckt? Über 20, einschließlich .xls, .xlsx, .xlsm und .csv.

Was ist „how to compare xlsx“?

„How to compare xlsx“ bezieht sich auf das programmatische Erkennen von Unterschieden zwischen zwei Excel‑Arbeitsmappen. GroupDocs.Comparison für .NET liest jede Arbeitsmappe, bewertet Änderungen auf Zellenebene und erzeugt ein hervorgehobenes Ergebnisdokument, das Einfügungen, Löschungen und Modifikationen zeigt. Der Vergleich hebt geänderte Zellen, Zeilen und Tabellenblätter hervor, sodass Unterschiede auf einen Blick leicht zu prüfen sind.

Warum stream‑basierter Vergleich verwenden?

Die Stream‑Verarbeitung reduziert den Speicherverbrauch, indem Dateien in Teilen gelesen werden, anstatt die gesamte Arbeitsmappe in den RAM zu laden. GroupDocs.Comparison kann 50 + Eingabe‑ und Ausgabeformate verarbeiten und mehrseitige Tabellenkalkulationen bearbeiten, während die maximale Speichernutzung auf typischer Serverhardware unter 100 MB bleibt. Das macht es ideal für Web‑Dienste, Micro‑Services und lokale Batch‑Jobs.

Voraussetzungen

  1. GroupDocs.Comparison for .NET – Download von der offiziellen Seite here.
  2. C#‑Entwicklungsumgebung – Visual Studio 2022 oder jede IDE, die .NET 6+ unterstützt.
  3. Excel‑Dateien – zwei .xlsx‑Arbeitsmappen, die Sie vergleichen möchten.
  4. Grundlegendes Verständnis von StreamsSystem.IO.Stream‑Konzepte werden im gesamten Beispiel verwendet.

Namespaces importieren

Die folgenden Namespaces geben Ihnen Zugriff auf die Vergleichs‑Engine und Stream‑Hilfsprogramme.

Der GroupDocs.Comparison‑Namespace enthält die Kernklassen für den Vergleich, während System.IO die Typen FileStream und MemoryStream bereitstellt, die für die Stream‑Verarbeitung benötigt werden.

Schritt‑für‑Schritt Implementierungs‑Leitfaden

Wie beeinflusst die Verwendung von Streams die Leistung?

Laden Sie jede Arbeitsmappe mit File.OpenRead() und übergeben Sie den resultierenden Stream direkt an den Comparer. Dieser Ansatz vermeidet temporäre Dateien, reduziert die I/O‑Zeit um bis zu 30 % bei SSD‑Speichern und hält den Prozess vollständig im Speicher, was für hochdurchsatzfähige Web‑APIs entscheidend ist.

Schritt 1: Ausgabevariablen initialisieren

Definieren Sie, wo das Vergleichsergebnis gespeichert wird. Die Verwendung von Path.Combine() garantiert den richtigen Verzeichnistrenner unter Windows, Linux oder macOS.

Pro Tipp: In der Produktion sollten Sie die Ausgabe in einen temporären Ordner oder einen Cloud‑Storage‑Bucket schreiben, um das Anwendungsverzeichnis sauber zu halten.

Schritt 2: Comparer‑Objekt erstellen

Die Klasse Comparer ist die zentrale Komponente, die den Vergleich von zwei oder mehr Dokumenten orchestriert.

Erstellen Sie eine Comparer‑Instanz, indem Sie die Quellarbeitsmappe mit File.OpenRead() öffnen. Die using‑Anweisung stellt sicher, dass der Dateistream automatisch geschlossen wird und Dateihandles nicht lecken.

Schritt 3: Ziel‑Dokument hinzufügen

Fügen Sie die zweite Arbeitsmappe dem Comparer hinzu. Sie können weitere Ziele anketten, wenn Sie eine Master‑Datei mit mehreren Varianten vergleichen müssen – nützlich für regionale Berichte oder Versionskontroll‑Szenarien.

Schritt 4: Vergleich ausführen

Rufen Sie die Methode Compare auf, um das Diff‑Dokument zu erzeugen. Das Ergebnis wird in einen neuen Stream geschrieben, der mit File.Create() erstellt wird. Die Ausgabedatei hebt alle geänderten Zellen, Zeilen und Tabellenblätter hervor, sodass die visuelle Überprüfung einfach ist.

Die Compare‑Methode führt den Vergleich aus und gibt das Ergebnisdokument als Stream zurück.

Schritt 5: Erfolgsmeldung anzeigen

Nachdem der Vergleich abgeschlossen ist, protokollieren Sie eine knappe Erfolgsmeldung, die den Ausgabepfad enthält. In einer realen API würden Sie den Stream an den Aufrufer zurückgeben oder ihn in einem Cloud‑Storage für spätere Abrufe speichern.

Häufige Probleme und Fehlersuche

  • File‑in‑use‑Fehler: Stellen Sie sicher, dass kein anderer Prozess (einschließlich Excel) die Datei geöffnet hat. Mit File.OpenRead() geöffnete Streams erhalten ein schreibgeschütztes Share‑Lock, das die meisten Konflikte mindert.
  • Speicherspitzen bei großen Dateien: Für Arbeitsmappen, die 100 MB überschreiten, aktivieren Sie das Flag ComparerOptionsEnableMemoryOptimization (falls verfügbar) und überwachen Sie den privaten Speicher des Prozesses.
  • Vergleiche gemischter Formate: GroupDocs.Comparison unterstützt konsistente Formatpaare; vermeiden Sie es, eine .xls‑Datei mit einer .xlsx‑Datei im selben Vorgang zu vergleichen, um Layout‑Inkonsistenzen zu verhindern.
  • Stream‑Positionierung: Beim Wiederverwenden eines Streams setzen Sie ihn immer mit stream.Seek(0, SeekOrigin.Begin) zurück, bevor Sie ihn dem Comparer übergeben.

Robuste Fehlerbehandlung: Fangen Sie ComparisonException für beschädigte Arbeitsmappen ab und protokollieren Sie den Dateinamen für spätere Untersuchungen.
ComparisonException wird von GroupDocs.Comparison ausgelöst, wenn das Eingabedokument beschädigt ist oder ein nicht unterstütztes Format verwendet.

Leistung und bewährte Methoden

  • Streams sofort freigeben: Wickeln Sie jeden FileStream in einen using‑Block.
  • Batch‑Verarbeitung: Verwenden Sie Parallel.ForEach mit asynchronen Comparern, um mehrere Dateipaare gleichzeitig zu verarbeiten, aber begrenzen Sie den Parallelitätsgrad, um CPU‑Überlastung zu vermeiden.
  • Robuste Fehlerbehandlung: Fangen Sie ComparisonException für beschädigte Arbeitsmappen ab und protokollieren Sie den Dateinamen für spätere Untersuchungen.
  • Eingabe‑Streams validieren: Überprüfen Sie den MIME‑Typ oder den Dateikopf vor dem Vergleich, um nicht‑Excel‑Uploads frühzeitig abzulehnen.

ComparerOptions bietet Konfigurationseinstellungen für den Vergleichsprozess, wie Speicheroptimierung und Empfindlichkeits‑Steuerungen.

Erweiterte Anwendungs‑Szenarien

  • Datenbank‑BLOB‑Vergleich: Holen Sie das Excel‑BLOB aus SQL Server, verpacken Sie es in einen MemoryStream und übergeben Sie es direkt an den Comparer – temporäre Dateien sind nicht nötig.
  • Cloud‑Storage‑Integration: Verwenden Sie das Azure Blob Storage SDK, um einen BlobStream zu erhalten und an den Comparer zu übergeben, wodurch vollständig serverlose Workflows ermöglicht werden.
  • Echtzeit‑API‑Endpunkt: Stellen Sie einen POST‑Endpunkt bereit, der zwei multipart/form‑data‑Dateien akzeptiert, sie on‑the‑fly vergleicht und das Diff als herunterladbaren Stream zurückgibt.

Fazit

Durch die Nutzung der stream‑basierten API von GroupDocs.Comparison erhalten Sie eine speichereffiziente, sichere und skalierbare Methode, um XLSX‑Dateien in C# zu vergleichen. Dieser Leitfaden behandelte alles von der Einrichtung bis zu fortgeschrittenen Cloud‑Szenarien und bietet Ihnen eine solide Grundlage, um den Tabellenvergleich in jede .NET‑Lösung zu integrieren.

Häufig gestellte Fragen

Q: Ist GroupDocs.Comparison für .NET mit allen Excel‑Formaten kompatibel?
A: Ja, es unterstützt über 20 Excel‑bezogene Formate, einschließlich .xls, .xlsx, .xlsm und .csv, und gewährleistet eine breite Kompatibilität sowohl mit Legacy‑ als auch modernen Arbeitsmappen.

Q: Kann ich den visuellen Stil des Vergleichsergebnisses anpassen?
A: Absolut. Die API ermöglicht das Festlegen von Hervorhebungsfarben, das Ändern des Rahmenstils und die Anpassung der Empfindlichkeit von Änderungen über ComparisonOptions.

Q: Benötige ich eine kommerzielle Lizenz für den Produktionseinsatz?
A: Für jede kommerzielle Bereitstellung ist eine gültige GroupDocs.Comparison‑Lizenz erforderlich. Sie können eine Lizenz here erhalten.

Q: Ist ein kostenloser Testzeitraum verfügbar?
A: Ja, Sie können eine voll funktionsfähige Testversion here herunterladen, um alle Funktionen vor dem Kauf zu evaluieren.

Q: Wo kann ich Community‑Support erhalten?
A: Das GroupDocs.Comparison‑Forum here ist ein aktiver Ort, um Fragen zu stellen und Lösungen mit anderen Entwicklern zu teilen.


Zuletzt aktualisiert: 2026-06-21
Getestet mit: GroupDocs.Comparison 23.10 for .NET
Autor: 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}.");

Verwandte Tutorials