Kako učitati proračunsku tablicu u .NET
Aspose.Cells FOSS za .NET omogućuje otvaranje postojećih XLSX proračunskih tablica jednim pozivom konstruktora i pruža otporan na greške način učitavanja za datoteke koje imaju manju strukturnu oštećenost. Instalirajte biblioteku iz NuGet-a s dotnet add package Aspose.Cells_FOSS.
Vodič korak po korak
Korak 1: Instalirajte paket
dotnet add package Aspose.Cells_FOSSProvjerite je li 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čitaj XLSX datoteku
Proslijedite putanju datoteke konstruktoru Workbook. Biblioteka čita XLSX datoteku i popunjava objekt radne knjige 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);Korak 4: Učitaj s opcijama popravka otpornih na greške
Za datoteke koje mogu imati ZIP ili XML korupciju, dostavite LoadOptions objekt s TryRepairPackage i TryRepairXml postavljenim na true. Omotajte poziv u try/catch za WorkbookLoadException u slučaju da je datoteka nepovratna.
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: Provjeri dijagnostiku učitavanja
Nakon učitavanja, pregledajte Workbook.LoadDiagnostics da vidite je li biblioteka primijenila popravke. HasRepairs je true ako je primijenjena bilo koja popravka; HasDataLossRisk je true ako su podaci mogli biti odbačeni. Iterirajte Issues da biste pristupili pojedinačnim zapisima DiagnosticEntry.
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, pristupite radnim listovima po indeksu ili imenu i pročitajte vrijednosti ć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 rješenja
WorkbookLoadException se baca čak i kada su omogućene opcije popravka.
To znači da je ZIP struktura datoteke previše oštećena da bi algoritmi popravka mogli oporaviti. Provjerite je li datoteka valjani ZIP arhiv (npr. pokušajte unzip -t file.xlsx). Ako je datoteka potpuno oštećena, ne može je otvoriti nijedna biblioteka.
Učitani radni list ima manje listova nego što se očekivalo.
Operacija popravka je možda uklonila radne listove koji su referencirali nedostajuće dijelove. Provjerite LoadDiagnostics.Issues za unose s DataLossRisk = true i obavijestite korisnika.
Vrijednosti ćelija su prazne nakon učitavanja.
Provjerite pristupate li ispravnom indeksu ili nazivu radnog lista. Koristite wb.Worksheets.Count za potvrdu očekivanog broja listova. Također provjerite da XLSX datoteka nije zaštićena lozinkom (datoteke zaštićene lozinkom trenutno nisu podržane).
Workbook konstruktor se zaglavi na velikoj datoteci.
Konstruktor je sinkroni i učitava cijelu datoteku u memoriju. Za vrlo velike datoteke, učitajte učitavanje na pozadinskoj niti kako bi UI ostao responzivan.
DiagnosticEntry.Severity prikazuje Error, ali HasRepairs je false.
HasRepairs odražava je li popravak uspješno primijenjen, a ne je li otkrivena greška. Unos ozbiljnosti Error s RepairApplied = false znači da je problem otkriven, ali se nije mogao popraviti — tretirajte to kao moguće upozorenje o integritetu podataka.
Često postavljana pitanja
Mogu li učitati XLSX datoteku iz Stream-a umjesto iz putanje datoteke?
Da. Konstruktor Workbook ima preopterećenja koja prihvaćaju objekt Stream. Proslijedite svoj stream uz instancu LoadOptions ako je potrebno učitavanje otporno na greške.
Podržava li biblioteka učitavanje XLSX datoteka zaštićenih lozinkom?
Datoteke zaštićene lozinkom nisu u trenutnoj API površini. Pokušaj učitavanja takve datoteke rezultirat će WorkbookLoadException.
Kako provjeriti koji je list aktivan u učitanom radnoj knjizi?
Pročitajte Workbook.Worksheets.ActiveSheetName kako biste dobili naziv lista koji je bio posljednji aktivan kada je datoteka spremljena.
Mogu li učitati više XLSX datoteka istovremeno?
Da. Svaka Workbook instanca je neovisna. Možete instancirati više Workbook objekata na odvojenim nitima bez zajedničkog stanja.
Što se događa ako se učita ćelija formule i keširani rezultat nedostaje?
Cell.StringValue vraća prazan niz. Cell.Formula i dalje vraća formulu kao niz. Keširana vrijednost se popunjava samo kada Excel (ili kompatibilna aplikacija) otvori i spremi datoteku.