Sådan indlæses et regneark i .NET
Aspose.Cells FOSS for .NET lader dig åbne eksisterende XLSX-regneark med et enkelt konstruktorkald og giver en fejl‑tolerant indlæsningssti for filer, der har mindre strukturel korruption. Installer biblioteket fra NuGet med dotnet add package Aspose.Cells_FOSS.
Trin-for-trin guide
Trin 1: Installer pakken
dotnet add package Aspose.Cells_FOSSBekræft, at pakken er til stede:
dotnet list package | grep Aspose.Cells_FOSSTrin 2: Importer navnerummet
Tilføj denne direktiv i starten af din C#-fil:
using Aspose.Cells_FOSS;Trin 3: Indlæs en XLSX‑fil
Pass filstien til Workbook-konstruktøren. Biblioteket læser XLSX-filen og udfylder workbook‑objektet i hukommelsen.
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);Trin 4: Indlæs med fejl‑tolerante reparationsindstillinger
For filer, der kan have ZIP‑ eller XML‑korruption, forsyn et LoadOptions‑objekt med TryRepairPackage og TryRepairXml sat til true. Pak kaldet ind i en try/catch for WorkbookLoadException i tilfælde af, at filen er uoprettelig.
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);
}Trin 5: Kontroller belastningsdiagnostik
Efter indlæsning inspicer Workbook.LoadDiagnostics for at se, om biblioteket har anvendt nogen reparationer. HasRepairs er true hvis en reparation blev anvendt; HasDataLossRisk er true hvis data kan være blevet kasseret. Iterer Issues for at få adgang til individuelle DiagnosticEntry poster.
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.");
}Trin 6: Få adgang til regnearksdata
Efter indlæsning kan du få adgang til regneark efter indeks eller navn og læse celleværdier ved hjælp af Cell.StringValue eller 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);Almindelige problemer og rettelser
WorkbookLoadException udløses selv med reparationsindstillinger aktiveret.
Dette betyder, at filens ZIP‑struktur er for beskadiget til, at reparationsalgoritmerne kan gendanne den. Verificer, at filen er et gyldigt ZIP‑arkiv (f.eks. prøv unzip -t file.xlsx). Hvis filen er fuldstændig korrupt, kan den ikke åbnes af noget bibliotek.
Den indlæste projektmappe har færre ark end forventet.
En reparationsoperation kan have fjernet regneark, der refererede til manglende dele. Tjek LoadDiagnostics.Issues for poster med DataLossRisk = true og underret brugeren.
Celleværdier er tomme efter indlæsning.
Sørg for, at du får adgang til den korrekte regnearksindeks eller -navn. Brug wb.Worksheets.Count for at bekræfte det forventede antal ark. Kontroller også, at XLSX-filen ikke er adgangskodebeskyttet (adgangskodebeskyttede filer understøttes i øjeblikket ikke).
Workbook constructor hangs on a large file.
Konstruktøren er synkron og indlæser hele filen i hukommelsen. For meget store filer skal indlæsningen køres på en baggrundstråd for at holde UI’en responsiv.
DiagnosticEntry.Severity viser Error men HasRepairs er false.
HasRepairs reflekterer om en reparation blev anvendt med succes, ikke om fejl blev opdaget. En Error-severity entry med RepairApplied = false betyder at problemet blev opdaget men kunne ikke repareres — betragt dette som en mulig advarsel om dataintegritet.
Ofte stillede spørgsmål
Kan jeg indlæse en XLSX-fil fra en Stream i stedet for en filsti?
Ja. Workbook-konstruktøren har overloads, der accepterer et Stream-objekt. Send din stream sammen med en LoadOptions-instans, hvis fejl‑tolerende indlæsning er nødvendig.
Understøtter biblioteket indlæsning af adgangskodebeskyttede XLSX-filer?
Password‑beskyttede filer er ikke i den aktuelle API‑overflade. Forsøg på at indlæse en vil resultere i en WorkbookLoadException.
Hvordan tjekker jeg, hvilket ark der er aktivt i den indlæste projektmappe?
Læs Workbook.Worksheets.ActiveSheetName for at få navnet på arket, der var sidst aktivt, da filen blev gemt.
Kan jeg indlæse flere XLSX-filer samtidigt?
Ja. Hver Workbook‑instans er uafhængig. Du kan oprette flere Workbook‑objekter på separate tråde uden delt tilstand.
Hvad sker der, hvis en formelcelle indlæses, og det cachede resultat er fraværende?
Cell.StringValue returnerer en tom streng. Cell.Formula returnerer stadig formelstrengen. Den cachede værdi udfyldes kun, når Excel (eller et kompatibelt program) åbner og gemmer filen.