Jak načíst tabulku v .NET

Jak načíst tabulku v .NET

Aspose.Cells FOSS for .NET vám umožňuje otevřít existující tabulky XLSX jedním voláním konstruktoru a poskytuje odolnou vůči chybám cestu načítání pro soubory, které mají drobné strukturální poškození. Nainstalujte knihovnu z NuGet pomocí dotnet add package Aspose.Cells_FOSS.

Průvodce krok za krokem

Krok 1: Nainstalujte balíček

dotnet add package Aspose.Cells_FOSS

Ověřte, že balíček je přítomen:

dotnet list package | grep Aspose.Cells_FOSS

Krok 2: Importovat jmenný prostor

Přidejte tuto direktivu na začátek vašeho souboru C#:

using Aspose.Cells_FOSS;

Krok 3: Načíst soubor XLSX

Předávejte cestu k souboru do konstruktoru Workbook. Knihovna načte soubor XLSX a naplní objekt sešitu v paměti.

using Aspose.Cells_FOSS;

var wb = new Workbook("data.xlsx");
Console.WriteLine("Loaded " + wb.Worksheets.Count + " sheet(s)");
Console.WriteLine("First sheet: " + wb.Worksheets[0].Name);
Console.WriteLine("A1 value: " + wb.Worksheets[0].Cells["A1"].StringValue);

Krok 4: Načíst s možnostmi opravy s tolerancí chyb

Pro soubory, které mohou mít poškození ZIP nebo XML, poskytněte objekt LoadOptions s TryRepairPackage a TryRepairXml nastavenými na true. Zabalte volání do try/catch pro WorkbookLoadException v případě, že soubor není obnovitelný.

using Aspose.Cells_FOSS;

var opts = new LoadOptions
{
    TryRepairPackage = true,
    TryRepairXml = true,
};

try
{
    var wb = new Workbook("possibly-corrupt.xlsx", opts);
    Console.WriteLine("Loaded successfully");
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable file: " + ex.Message);
}

Krok 5: Zkontrolujte diagnostiku načítání

Po načtení zkontrolujte Workbook.LoadDiagnostics, zda knihovna provedla nějaké opravy. HasRepairs je true, pokud byla provedena oprava; HasDataLossRisk je true, pokud mohla být data vyřazena. Iterujte Issues pro přístup k jednotlivým DiagnosticEntry záznamům.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;

if (diag.HasRepairs)
{
    Console.WriteLine("Repairs were applied. Data loss risk: " + diag.HasDataLossRisk);
    foreach (var entry in diag.Issues)
        Console.WriteLine($"  [{entry.Severity}] {entry.Code}: {entry.Message}");
}
else
{
    Console.WriteLine("File loaded cleanly — no repairs.");
}

Krok 6: Přístup k datům listu

Po načtení přistupujte k listům podle indexu nebo názvu a čtěte hodnoty buněk pomocí Cell.StringValue nebo Cell.Value.

using Aspose.Cells_FOSS;

var wb = new Workbook("data.xlsx");

// By index
var sheet = wb.Worksheets[0];
Console.WriteLine("Sheet: " + sheet.Name);
Console.WriteLine("A1: " + sheet.Cells["A1"].StringValue);

// By name
var named = wb.Worksheets["Report"];
if (named != null)
    Console.WriteLine("Report!B2: " + named.Cells["B2"].StringValue);

Časté problémy a opravy

WorkbookLoadException je vyvolána i při povolených možnostech opravy.
To znamená, že struktura ZIP souboru je příliš poškozena, aby ji opravy algoritmy mohly obnovit. Ověřte, že soubor je platný ZIP archiv (např. vyzkoušejte unzip -t file.xlsx). Pokud je soubor zcela poškozený, nemůže být otevřen žádnou knihovnou.

Načtený sešit má méně listů, než se očekávalo. Operace opravy mohla odstranit listy, které odkazovaly na chybějící části. Zkontrolujte LoadDiagnostics.Issues pro položky s DataLossRisk = true a upozorněte uživatele.

Buňky jsou po načtení prázdné. Ujistěte se, že přistupujete k správnému indexu nebo názvu listu. Použijte wb.Worksheets.Count k potvrzení očekávaného počtu listů. Také zkontrolujte, že soubor XLSX není chráněn heslem (soubory chráněné heslem nejsou v současné době podporovány).

Workbook konstruktor se zasekne u velkého souboru.
Konstruktor je synchronní a načítá celý soubor do paměti. U velmi velkých souborů spusťte načítání na vlákně na pozadí, aby UI zůstalo responzivní.

DiagnosticEntry.Severity ukazuje Error, ale HasRepairs je false.
HasRepairs odráží, zda byla oprava úspěšně provedena, nikoli zda byly detekovány chyby. Záznam s vážností Error a s RepairApplied = false znamená, že problém byl detekován, ale nemohl být opraven — považujte to za možná varování o integritě dat.

Často kladené otázky

Mohu načíst soubor XLSX ze streamu místo cesty k souboru?

Ano. Konstruktor Workbook má přetížení, která přijímají objekt Stream. Předávejte svůj stream spolu s instancí LoadOptions, pokud je potřeba načítání s tolerancí chyb.

Podporuje knihovna načítání souborů XLSX chráněných heslem?

Soubory chráněné heslem nejsou v aktuálním rozhraní API. Pokus o načtení takového souboru povede k WorkbookLoadException.

Jak zjistím, který list je aktivní v načteném sešitu?

Přečtěte Workbook.Worksheets.ActiveSheetName, abyste získali název listu, který byl naposledy aktivní při uložení souboru.

Mohu načíst více souborů XLSX současně?

Ano. Každá instance Workbook je nezávislá. Můžete vytvořit více objektů Workbook na samostatných vláknech bez sdíleného stavu.

Co se stane, pokud je buňka s formulí načtena a chybí uložený výsledek?

Cell.StringValue vrací prázdný řetězec. Cell.Formula stále vrací řetězec vzorce. Kešovaná hodnota je naplněna pouze tehdy, když Excel (nebo kompatibilní aplikace) otevře a uloží soubor.

Viz také

 Čeština