Cum să încărcați o foaie de calcul în .NET
Aspose.Cells FOSS for .NET vă permite să deschideți foi de calcul XLSX existente cu un singur apel de constructor și oferă o cale de încărcare tolerantă la erori pentru fișierele care au corupție structurală minoră. Instalați biblioteca din NuGet cu dotnet add package Aspose.Cells_FOSS.
Ghid pas cu pas
Pasul 1: Instalați pachetul
dotnet add package Aspose.Cells_FOSSVerificați dacă pachetul este prezent:
dotnet list package | grep Aspose.Cells_FOSSPasul 2: Importă spațiul de nume
Adăugați această directivă în partea de sus a fișierului C#.
using Aspose.Cells_FOSS;Pasul 3: Încarcă un fișier XLSX
Transmiteți calea fișierului la constructorul Workbook. Biblioteca citește fișierul XLSX și populează obiectul workbook în memorie.
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);Pasul 4: Încărcare cu opțiuni de reparare tolerantă la erori
Pentru fișierele care pot avea corupție ZIP sau XML, furnizați un obiect LoadOptions cu TryRepairPackage și TryRepairXml setate la true. Încadrați apelul într-un try/catch pentru WorkbookLoadException în cazul în care fișierul este irecuperabil.
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);
}Pasul 5: Verifică diagnosticele de încărcare
După încărcare, inspectați Workbook.LoadDiagnostics pentru a vedea dacă biblioteca a aplicat vreo reparare. HasRepairs este true dacă a fost aplicată vreo reparare; HasDataLossRisk este true dacă datele ar fi putut fi eliminate. Iterați Issues pentru a accesa înregistrările individuale 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.");
}Pasul 6: Accesarea datelor din foaia de lucru
După încărcare, accesați foile de lucru prin index sau nume și citiți valorile celulelor utilizând Cell.StringValue sau 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);Probleme comune și soluții
WorkbookLoadException este aruncat chiar și cu opțiunile de reparare activate.
Acest lucru înseamnă că structura ZIP a fișierului este prea deteriorată pentru ca algoritmii de reparare să o recupereze. Verificați că fișierul este o arhivă ZIP validă (de exemplu, încercați unzip -t file.xlsx). Dacă fișierul este complet corupt, nu poate fi deschis de nicio bibliotecă.
Registrul încărcat are mai puține foi decât era de așteptat.
O operațiune de reparare ar fi putut elimina foile de calcul care făceau referire la părți lipsă. Verificați LoadDiagnostics.Issues pentru intrări cu DataLossRisk = true și notificați utilizatorul.
Valorile celulelor sunt goale după încărcare.
Asigurați-vă că accesați indexul sau numele corect al foii de lucru. Utilizați wb.Worksheets.Count pentru a confirma numărul așteptat de foi. De asemenea, verificați că fișierul XLSX nu este protejat prin parolă (fișierele protejate prin parolă nu sunt în prezent suportate).
Workbook constructorul se blochează la un fișier mare.
Constructorul este sincron și încarcă întregul fișier în memorie. Pentru fișiere foarte mari, executați încărcarea pe un fir de execuție în fundal pentru a menține interfața utilizatorului receptivă.
DiagnosticEntry.Severity arată Error, dar HasRepairs este false.
HasRepairs reflectă dacă o reparare a fost aplicată cu succes, nu dacă erorile au fost detectate. O înregistrare cu severitate Error‑severity cu RepairApplied = false înseamnă că problema a fost detectată, dar nu a putut fi reparată — tratați aceasta ca un posibil avertisment de integritate a datelor.
Întrebări frecvente
Pot încărca un fișier XLSX dintr-un Stream în loc de o cale de fișier?
Da. Constructorul Workbook are suprasarcini care acceptă un obiect Stream. Transmite fluxul tău alături de o instanță LoadOptions dacă este necesară încărcarea tolerantă la erori.
Suportă biblioteca încărcarea fișierelor XLSX protejate prin parolă?
Fișierele protejate prin parolă nu fac parte din suprafața curentă a API-ului. Încercarea de a încărca unul va genera un WorkbookLoadException.
Cum pot verifica care foaie este activă în registrul de lucru încărcat?
Citește Workbook.Worksheets.ActiveSheetName pentru a obține numele foii care a fost ultima activă când fișierul a fost salvat.
Pot să încarc mai multe fișiere XLSX simultan?
Da. Fiecare instanță Workbook este independentă. Poți să instanțiezi multiple obiecte Workbook pe fire de execuție separate fără stare partajată.
Ce se întâmplă dacă o celulă cu formulă este încărcată și rezultatul în cache lipsește?
Cell.StringValue returnează un șir gol. Cell.Formula încă returnează șirul formulei. Valoarea în cache este populată numai când Excel (sau o aplicație compatibilă) deschide și salvează fișierul.