Hvordan laste inn et regneark i .NET

Hvordan laste inn et regneark i .NET

Aspose.Cells FOSS for .NET lar deg åpne eksisterende XLSX‑regneark med ett enkelt konstruktorkall og gir en feiltolerant innlastingssti for filer som har mindre strukturell korrupthet. Installer biblioteket fra NuGet med dotnet add package Aspose.Cells_FOSS.

Trinnvis veiledning

Steg 1: Installer pakken

dotnet add package Aspose.Cells_FOSS

Verifiser at pakken er tilstede:

dotnet list package | grep Aspose.Cells_FOSS

Trinn 2: Importer navnerommet

Legg til dette direktivet øverst i C#‑filen din:

using Aspose.Cells_FOSS;

Trinn 3: Last inn en XLSX‑fil

Send filstien til Workbook‑konstruktøren. Biblioteket leser XLSX‑filen og fyller inn workbook‑objektet 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: Last inn med feil‑tolerante reparasjonsalternativer

For filer som kan ha ZIP- eller XML-skade, lever et LoadOptions‑objekt med TryRepairPackage og TryRepairXml satt til true. Pakk inn kallet i en try/catch for WorkbookLoadException i tilfelle filen er uopprettelig.

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: Sjekk lastdiagnostikk

Etter lasting, inspiser Workbook.LoadDiagnostics for å se om biblioteket har utført noen reparasjoner. HasRepairs er true hvis noen reparasjon ble utført; HasDataLossRisk er true hvis data kan ha blitt forkastet. Iterer Issues for å få tilgang 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.");
}

Steg 6: Tilgang til regnearkdata

Etter lasting, få tilgang til regneark etter indeks eller navn, og les celleverdier ved hjelp av 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);

Vanlige problemer og løsninger

WorkbookLoadException kastes selv med reparasjonsalternativer aktivert.
Dette betyr at filens ZIP‑struktur er for skadet for at reparasjonsalgoritmene skal kunne gjenopprette den. Verifiser at filen er et gyldig ZIP‑arkiv (f.eks. prøv unzip -t file.xlsx). Hvis filen er helt korrupt, kan den ikke åpnes av noe bibliotek.

Den lastede arbeidsboken har færre ark enn forventet. En reparasjonsoperasjon kan ha fjernet regneark som refererte til manglende deler. Sjekk LoadDiagnostics.Issues for oppføringer med DataLossRisk = true og varsle brukeren.

Celleverdier er tomme etter lasting.
Sørg for at du får tilgang til riktig regnearkindeks eller -navn. Bruk wb.Worksheets.Count for å bekrefte forventet antall ark. Kontroller også at XLSX-filen ikke er passordbeskyttet (passordbeskyttede filer støttes foreløpig ikke).

Workbook konstruktøren henger på en stor fil.
Konstruktøren er synkron og laster hele filen inn i minnet. For svært store filer, kjør innlastingen på en bakgrunnstråd for å holde UI responsivt.

DiagnosticEntry.Severity viser Error men HasRepairs er false. HasRepairs reflekterer om en reparasjon ble vellykket utført, ikke om feil ble oppdaget. En Error-alvorlighetsgrad oppføring med RepairApplied = false betyr at problemet ble oppdaget, men kunne ikke repareres — behandle dette som en mulig advarsel om dataintegritet.

Ofte stilte spørsmål

Kan jeg laste inn en XLSX‑fil fra en Stream i stedet for en filsti?

Ja. Workbook‑konstruktøren har overbelastninger som godtar et Stream‑objekt. Send strømmen din sammen med en LoadOptions‑instans hvis feil‑tolerant lasting er nødvendig.

Støtter biblioteket innlasting av passordbeskyttede XLSX-filer?

Passordbeskyttede filer er ikke i den nåværende API‑overflaten. Å prøve å laste inn en vil resultere i en WorkbookLoadException.

Hvordan sjekker jeg hvilket ark som er aktivt i den lastede arbeidsboken?

Les Workbook.Worksheets.ActiveSheetName for å få navnet på arket som var sist aktivt da filen ble lagret.

Kan jeg laste inn flere XLSX-filer samtidig?

Ja. Hver Workbook-instans er uavhengig. Du kan opprette flere Workbook-objekter på separate tråder uten delt tilstand.

Hva skjer hvis en formelcelle lastes og det bufrede resultatet mangler?

Cell.StringValue returnerer en tom streng. Cell.Formula returnerer fortsatt formelstrengen. Den bufrede verdien fylles kun inn når Excel (eller et kompatibelt program) åpner og lagrer filen.

Se også

 Norsk