Hur man laddar ett kalkylblad i .NET

Hur man laddar ett kalkylblad i .NET

Aspose.Cells FOSS for .NET låter dig öppna befintliga XLSX‑kalkylblad med ett enda konstruktörsanrop och erbjuder en fel‑tolerant laddningsväg för filer som har mindre strukturell korruption. Installera biblioteket från NuGet med dotnet add package Aspose.Cells_FOSS.

Steg-för-steg-guide

Steg 1: Installera paketet

dotnet add package Aspose.Cells_FOSS

Verifiera att paketet finns:

dotnet list package | grep Aspose.Cells_FOSS

Steg 2: Importera namnrymden

Lägg till detta direktiv högst upp i din C#-fil:

using Aspose.Cells_FOSS;

Steg 3: Ladda en XLSX‑fil

Skicka filvägen till Workbook-konstruktorn. Biblioteket läser XLSX-filen och fyller i arbetsboksobjektet i minnet.

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);

Steg 4: Ladda med fel‑toleranta reparationsalternativ

För filer som kan ha ZIP‑ eller XML‑skador, tillhandahåll ett LoadOptions‑objekt med TryRepairPackage och TryRepairXml satta till true. Omslut anropet i en try/catch för WorkbookLoadException om filen är oåterkallelig.

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);
}

Steg 5: Kontrollera laddningsdiagnostik

Efter laddning, inspektera Workbook.LoadDiagnostics för att se om biblioteket har gjort några reparationer. HasRepairs är true om någon reparation har tillämpats; HasDataLossRisk är true om data kan ha kastats bort. Iterera Issues för att komma åt enskilda 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.");
}

Steg 6: Åtkomst till arbetsbladets data

Efter inläsning, öppna kalkylblad efter index eller namn, och läs cellvärden med 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);

Vanliga problem och lösningar

WorkbookLoadException kastas även när reparationsalternativ är aktiverade.
Detta betyder att filens ZIP‑struktur är för skadad för att reparationsalgoritmerna ska kunna återställa den. Verifiera att filen är ett giltigt ZIP‑arkiv (t.ex. prova unzip -t file.xlsx). Om filen är helt korrupt kan den inte öppnas av något bibliotek.

Den laddade arbetsboken har färre blad än förväntat. En reparationsoperation kan ha tagit bort kalkylblad som refererade till saknade delar. Kontrollera LoadDiagnostics.Issues för poster med DataLossRisk = true och meddela användaren.

Cellvärden är tomma efter inläsning.
Se till att du använder rätt arbetsbladsindex eller namn. Använd wb.Worksheets.Count för att bekräfta det förväntade antalet blad. Kontrollera också att XLSX-filen inte är lösenordsskyddad (lösenordsskyddade filer stöds för närvarande inte).

Workbook konstruktor hänger på en stor fil.
Konstruktorn är synkron och läser in hela filen i minnet. För mycket stora filer, kör inläsningen på en bakgrundstråd för att hålla UI responsivt.

DiagnosticEntry.Severity visar Error men HasRepairs är false. HasRepairs visar om en reparation har tillämpats framgångsrikt, inte om fel har upptäckts. En Error-allvarlighetsgradspost med RepairApplied = false betyder att problemet upptäcktes men kunde inte repareras — behandla detta som en möjlig varning om dataintegritet.

Vanliga frågor

Kan jag ladda en XLSX-fil från en Stream istället för en filsökväg?

Ja. Workbook‑konstruktorn har överlagringar som accepterar ett Stream‑objekt. Skicka ditt flöde tillsammans med en LoadOptions‑instans om fel‑tolerant laddning behövs.

Stöder biblioteket att ladda lösenordsskyddade XLSX-filer?

Lösenordsskyddade filer finns inte i den nuvarande API-ytan. Att försöka ladda en sådan kommer att resultera i en WorkbookLoadException.

Hur kontrollerar jag vilket blad som är aktivt i den inlästa arbetsboken?

Läs Workbook.Worksheets.ActiveSheetName för att få namnet på bladet som var senast aktivt när filen sparades.

Kan jag ladda flera XLSX-filer samtidigt?

Ja. Varje Workbook‑instans är oberoende. Du kan instansiera flera Workbook‑objekt på separata trådar utan delat tillstånd.

Vad händer om en formelcell laddas och det cachade resultatet saknas?

Cell.StringValue returnerar en tom sträng. Cell.Formula returnerar fortfarande formelsträngen. Det cachade värdet fylls i endast när Excel (eller ett kompatibelt program) öppnar och sparar filen.

Se även

 Svenska