Jak porovnat soubory XLSX v C# pomocí streamů – Kompletní průvodce

Porovnávání tabulek Excel ručně je únavné a náchylné k chybám, zejména když potřebujete ověřovat velké finanční zprávy nebo auditovat datové sady. V tomto tutoriálu se dozvíte, jak efektivně how to compare xlsx soubory pomocí GroupDocs.Comparison pro .NET s využitím zpracování založeného na streamech. Provedeme vás každým krokem, vysvětlíme, proč jsou streamy důležité, a poskytneme praktické tipy, které můžete použít ve svých projektech.

Rychlé odpovědi

  • Jaká knihovna provádí porovnání Excel? GroupDocs.Comparison for .NET.
  • Mohu porovnávat soubory bez jejich ukládání na disk? Ano—použijte streamy pro práci přímo s daty v paměti.
  • Je pro produkci vyžadována licence? Komerní licence je povinná; je k dispozici bezplatná zkušební verze.
  • Jaké verze .NET jsou podporovány? .NET Framework 4.5+, .NET Core 3.1+, .NET 5/6/7.
  • Kolik formátů Excel je pokryto? Více než 20, včetně .xls, .xlsx, .xlsm a .csv.

Co je „how to compare xlsx“?

“How to compare xlsx” odkazuje na programové detekování rozdílů mezi dvěma soubory se sešitem Excel. GroupDocs.Comparison pro .NET načte každý sešit, vyhodnotí změny na úrovni buněk a vygeneruje zvýrazněný výstupní dokument, který zobrazuje vložení, odstranění a úpravy. Porovnání zvýrazní změněné buňky, řádky a listy, což usnadňuje rychlý přehled rozdílů.

Proč používat porovnání založené na streamech?

Zpracování pomocí streamů snižuje zatížení paměti tím, že soubory čte po částech místo načítání celého sešitu do RAM. GroupDocs.Comparison dokáže zpracovat 50 + vstupních a výstupních formátů a pracovat s vícesetstránkovými tabulkami, přičemž udržuje špičkovou spotřebu paměti pod 100 MB na typickém serverovém hardware. To jej činí ideálním pro webové služby, mikro‑služby a lokální dávkové úlohy.

Požadavky

  1. GroupDocs.Comparison for .NET – stáhněte z oficiálního webu zde.
  2. C# vývojové prostředí – Visual Studio 2022 nebo jakékoli IDE podporující .NET 6+.
  3. Excel soubory – dva .xlsx sešity, které chcete porovnat.
  4. Základní pochopení streamů – koncepty System.IO.Stream jsou použity v celém příkladu.

Importovat jmenné prostory

Následující jmenné prostory vám poskytují přístup k enginu pro porovnání a utilitám pro práci se streamy.

Jmenný prostor GroupDocs.Comparison obsahuje základní třídy pro porovnání, zatímco System.IO poskytuje typy FileStream a MemoryStream potřebné pro manipulaci se streamy.

Průvodce implementací krok za krokem

Jak používání streamů ovlivňuje výkon?

Načtěte každý sešit pomocí File.OpenRead() a předávejte vzniklý stream přímo porovnávači. Tento přístup eliminuje dočasné soubory, zkrátí dobu I/O až o 30 % na SSD úložištích a udržuje proces kompletně v paměti, což je klíčové pro webová API s vysokou propustností.

Krok 1: Inicializovat výstupní proměnné

Definujte, kde bude výsledek porovnání uložen. Použití Path.Combine() zajišťuje správný oddělovač adresářů ve Windows, Linuxu i macOS.

Pro Tip: V produkci zapisujte výstup do dočasné složky nebo úložiště v cloudu, aby byl adresář aplikace čistý.

Krok 2: Vytvořit objekt Comparer

Třída Comparer je centrální komponenta, která orchestruje porovnání dvou nebo více dokumentů.

Vytvořte instanci Comparer otevřením zdrojového sešitu pomocí File.OpenRead(). Příkaz using zajišťuje automatické uzavření souborového streamu, čímž zabraňuje únikům souborových popisovačů.

Krok 3: Přidat cílový dokument

Přidejte druhý sešit do porovnávače. Můžete řetězit další cíle, pokud potřebujete porovnat jeden hlavní soubor s několika variantami—užitečné pro regionální reportování nebo scénáře správy verzí.

Krok 4: Provedení porovnání

Vyvolejte metodu Compare pro vygenerování dokumentu s rozdíly. Výsledek je zapsán do nového streamu vytvořeného pomocí File.Create(). Výstupní soubor zvýrazní všechny změněné buňky, řádky a listy, což usnadňuje vizuální revizi.

Metoda Compare provádí porovnání a vrací výstupní dokument jako stream.

Krok 5: Zobrazit zprávu o úspěchu

Po dokončení porovnání zaznamenejte stručnou zprávu o úspěchu, která obsahuje cestu k výstupu. Ve skutečném API byste stream vrátili volajícímu nebo jej uložili do cloudového úložiště pro pozdější načtení.

Časté problémy a řešení

  • Chyby soubor‑v‑použití: Ujistěte se, že žádný jiný proces (včetně Excelu) nemá soubor otevřený. Streamy otevřené pomocí File.OpenRead() získají sdílený zámek jen pro čtení, což většinu konfliktů zmírňuje.
  • Nárazové špičky paměti u velkých souborů: Pro sešity přesahující 100 MB povolte příznak ComparerOptionsEnableMemoryOptimization (pokud je k dispozici) a monitorujte soukromou paměť procesu.
  • Porovnání smíšených formátů: GroupDocs.Comparison podporuje konzistentní páry formátů; vyhněte se porovnání souboru .xls s .xlsx ve stejné operaci, aby nedošlo k nesouladu rozvržení.
  • Umístění streamu: Při opětovném použití streamu jej vždy resetujte pomocí stream.Seek(0, SeekOrigin.Begin) před předáním porovnávači.

Robustní zpracování chyb: Zachyťte ComparisonException pro poškozené sešity a zaznamenejte název souboru pro pozdější vyšetřování.
ComparisonException je vyvolána knihovnou GroupDocs.Comparison, když je vstupní dokument poškozený nebo používá nepodporovaný formát.

Výkon a osvědčené postupy

  • Okamžitě uvolňovat streamy: Zabalte každý FileStream do bloku using.
  • Dávkové zpracování: Použijte Parallel.ForEach s asynchronními porovnávači pro souběžné zpracování více párů souborů, ale omezte stupeň paralelismu, aby nedošlo k přetížení CPU.
  • Robustní zpracování chyb: Zachyťte ComparisonException pro poškozené sešity a zaznamenejte název souboru pro pozdější vyšetřování.
  • Ověřit vstupní streamy: Ověřte MIME typ nebo hlavičku souboru před porovnáním, abyste včas odmítli nenačtené soubory, které nejsou Excel.

ComparerOptions poskytuje konfigurační nastavení pro proces porovnání, jako je optimalizace paměti a ovládání citlivosti.

Pokročilé scénáře použití

  • Porovnání BLOBu v databázi: Získejte Excel BLOB z SQL Serveru, zabalte jej do MemoryStream a předávejte přímo porovnávači—nejsou potřeba žádné dočasné soubory.
  • Integrace cloudového úložiště: Použijte Azure Blob Storage SDK k získání BlobStream a předávejte jej porovnávači, což umožní plně serverless workflow.
  • Endpoint API v reálném čase: Zveřejněte POST endpoint, který přijímá dva soubory multipart/form‑data, porovná je za běhu a vrátí rozdíl jako stahovatelný stream.

Závěr

Využitím stream‑založeného API knihovny GroupDocs.Comparison získáte paměťově efektivní, bezpečný a škálovatelný způsob, jak porovnávat soubory XLSX v C#. Tento průvodce pokryl vše od nastavení až po pokročilé cloudové scénáře a poskytl vám pevný základ pro integraci porovnání tabulek do jakéhokoli .NET řešení.

Často kladené otázky

Q: Je GroupDocs.Comparison pro .NET kompatibilní se všemi formáty Excel?
A: Ano, podporuje více než 20 formátů souvisejících s Excelem, včetně .xls, .xlsx, .xlsm a .csv, což zajišťuje širokou kompatibilitu jak se staršími, tak moderními sešity.

Q: Mohu přizpůsobit vizuální styl výsledku porovnání?
A: Rozhodně. API vám umožní nastavit barvy zvýraznění, změnit styl ohraničení a upravit úroveň citlivosti změn pomocí ComparisonOptions.

Q: Potřebuji komerční licenci pro produkční nasazení?
A: Platná licence GroupDocs.Comparison je vyžadována pro jakékoli komerční nasazení. Licenci můžete získat zde.

Q: Je k dispozici bezplatná zkušební verze?
A: Ano, můžete si stáhnout plně funkční zkušební verzi zde a vyzkoušet všechny funkce před zakoupením.

Q: Kde mohu získat podporu komunity?
A: Fórum GroupDocs.Comparison zde je aktivní místo, kde můžete klást otázky a sdílet řešení s ostatními vývojáři.


Poslední aktualizace: 2026-06-21
Testováno s: 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}.");

Související tutoriály