Kako učitati proračunsku tabelu u .NET
Aspose.Cells FOSS for .NET omogućava otvaranje postojećih XLSX tabela jednim pozivom konstruktora i pruža otporan na greške način učitavanja za fajlove koji imaju manju strukturalnu oštećenost. Instalirajte biblioteku sa NuGet‑a pomoću dotnet add package Aspose.Cells_FOSS.
Vodič korak po korak
Korak 1: Instalirajte paket
dotnet add package Aspose.Cells_FOSSProverite da je paket prisutan:
dotnet list package | grep Aspose.Cells_FOSSKorak 2: Uvezi prostor imena
Dodajte ovu direktivu na početak vaše C# datoteke:
using Aspose.Cells_FOSS;Korak 3: Učitajte XLSX datoteku
Prosledite putanju do fajla konstruktoru Workbook. Biblioteka čita XLSX fajl i popunjava objekat radne sveske u memoriji.
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);Корак 4: Учитајте са опцијама поправке отпорне на грешке
Za datoteke koje mogu imati ZIP ili XML oštećenje, obezbedite LoadOptions objekat sa TryRepairPackage i TryRepairXml postavljenim na true. Umotajte poziv u try/catch za WorkbookLoadException u slučaju da datoteka nije moguće oporaviti.
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);
}Korak 5: Provera dijagnostike učitavanja
Nakon učitavanja, proverite Workbook.LoadDiagnostics da vidite da li je biblioteka primenila bilo kakve popravke. HasRepairs je true ako je primenjena neka popravka; HasDataLossRisk je true ako su podaci možda odbačeni. Prođite kroz Issues da pristupite pojedinačnim DiagnosticEntry zapisima.
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.");
}Korak 6: Pristup podacima radnog lista
Nakon učitavanja, pristupajte radnim listovima po indeksu ili imenu i čitajte vrednosti ćelija koristeći Cell.StringValue ili 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);Uobičajeni problemi i popravke
WorkbookLoadException se baca čak i kada su opcije popravke omogućene.
Ovo znači da je ZIP struktura fajla previše oštećena da bi algoritmi za popravku mogli da je oporave. Proverite da li je fajl validna ZIP arhiva (npr. pokušajte unzip -t file.xlsx). Ako je fajl potpuno oštećen, ne može ga otvoriti nijedna biblioteka.
Učitani radni list ima manje listova nego što se očekivalo.
Operacija popravke je možda uklonila radne listove koji su referencirali nedostajuće delove. Proverite LoadDiagnostics.Issues za unose sa DataLossRisk = true i obavestite korisnika.
Vrednosti ćelija su prazne nakon učitavanja.
Uverite se da pristupate ispravnom indeksu ili imenu radnog lista. Koristite wb.Worksheets.Count da potvrdite očekivani broj listova. Takođe proverite da XLSX fajl nije zaštićen lozinkom (fajlovi zaštićeni lozinkom trenutno nisu podržani).
Workbook конструктор се застаје на великој датотеци.
Конструктор је синхрон и учитава целу датотеку у меморију. За веома велике датотеке, покрените учитавање у позадинском току како би UI остао реагујући.
DiagnosticEntry.Severity pokazuje Error, ali HasRepairs je false.
HasRepairs odražava da li je popravka uspešno primenjena, a ne da li su otkrivene greške. Unos ozbiljnosti Error‑severnosti sa RepairApplied = false znači da je problem otkriven, ali nije mogao biti popravljen — tretirajte ovo kao moguću upozorenje o integritetu podataka.
Често постављана питања
Могу ли да учитам XLSX датотеку из Stream‑а уместо путање датотеке?
Да. Конструктор Workbook има преоптерећења која прихватају објекат Stream. Проследите ваш ток заједно са инстанцом LoadOptions ако је потребно учитавање отпорно на грешке.
Da li biblioteka podržava učitavanje XLSX fajlova zaštićenih lozinkom?
Datoteke zaštićene lozinkom nisu deo trenutne API površine. Pokušaj učitavanja takve datoteke će rezultirati WorkbookLoadException.
Kako da proverim koji je list aktivan u učitanoj radnoj svesci?
Pročitajte Workbook.Worksheets.ActiveSheetName da biste dobili naziv lista koji je bio poslednji aktivan kada je fajl sačuvan.
Mogu li učitati više XLSX datoteka istovremeno?
Da. Svaka Workbook instanca je nezavisna. Možete instancirati više Workbook objekata na odvojenim nitima bez deljenog stanja.
Šta se dešava ako se učita ćelija formule i keširani rezultat nije prisutan?
Cell.StringValue vraća prazan string. Cell.Formula i dalje vraća string formule. Keširana vrednost se popunjava samo kada Excel (ili kompatibilna aplikacija) otvori i sačuva fajl.