Hoe een spreadsheet te laden in .NET
Aspose.Cells FOSS for .NET laat je bestaande XLSX‑spreadsheets openen met één enkele constructoraanroep en biedt een fouttolerante laadroute voor bestanden die een kleine structurele corruptie hebben. Installeer de bibliotheek vanuit NuGet met dotnet add package Aspose.Cells_FOSS.
Stapsgewijze handleiding
Stap 1: Installeer het pakket
dotnet add package Aspose.Cells_FOSSControleer of het pakket aanwezig is:
dotnet list package | grep Aspose.Cells_FOSSStap 2: Importeer de namespace
Voeg deze directive toe aan het begin van uw C#‑bestand:
using Aspose.Cells_FOSS;Stap 3: Laad een XLSX‑bestand
Geef het bestandspad door aan de Workbook constructor. De bibliotheek leest het XLSX‑bestand en vult het in‑memory werkboekobject.
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);Stap 4: Laden met fouttolerante reparatieopties
Voor bestanden die mogelijk ZIP- of XML-corruptie hebben, lever een LoadOptions object met TryRepairPackage en TryRepairXml ingesteld op true. Plaats de aanroep in een try/catch voor WorkbookLoadException voor het geval het bestand niet kan worden hersteld.
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);
}Stap 5: Controleer laaddiagnostiek
Na het laden, inspecteer Workbook.LoadDiagnostics om te zien of de bibliotheek reparaties heeft toegepast. HasRepairs is true als er een reparatie is toegepast; HasDataLossRisk is true als gegevens mogelijk zijn weggegooid. Itereer Issues om individuele DiagnosticEntry records te benaderen.
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.");
}Stap 6: Werkbladgegevens openen
Na het laden, krijg toegang tot werkbladen via index of naam, en lees celwaarden met Cell.StringValue of 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);Veelvoorkomende problemen en oplossingen
WorkbookLoadException wordt gegooid zelfs met reparatieopties ingeschakeld. Dit betekent dat de ZIP-structuur van het bestand te beschadigd is voor de reparatie‑algoritmen om te herstellen. Controleer of het bestand een geldig ZIP‑archief is (bijv. probeer unzip -t file.xlsx). Als het bestand volledig corrupt is, kan het door geen enkele bibliotheek worden geopend.
De geladen werkmap heeft minder werkbladen dan verwacht.
Een reparatiebewerking kan werkbladen hebben verwijderd die verwezen naar ontbrekende onderdelen. Controleer LoadDiagnostics.Issues op items met DataLossRisk = true en meld dit aan de gebruiker.
Celwaarden zijn leeg na het laden.
Zorg ervoor dat u de juiste werkbladindex of -naam gebruikt. Gebruik wb.Worksheets.Count om het verwachte aantal bladen te bevestigen. Controleer ook of het XLSX‑bestand niet met een wachtwoord is beveiligd (wachtwoordbeveiligde bestanden worden momenteel niet ondersteund).
Workbook constructor hangt vast bij een groot bestand.
De constructor is synchroon en laadt het volledige bestand in het geheugen. Voor zeer grote bestanden, voer de lading uit op een achtergrondthread om de UI responsief te houden.
DiagnosticEntry.Severity toont Error maar HasRepairs is false.HasRepairs geeft weer of een reparatie succesvol is toegepast, niet of fouten zijn gedetecteerd. Een Error‑ernstvermelding met RepairApplied = false betekent dat het probleem is gedetecteerd maar niet kon worden gerepareerd — beschouw dit als een mogelijke waarschuwing voor gegevensintegriteit.
Veelgestelde vragen
Kan ik een XLSX-bestand laden vanuit een Stream in plaats van een bestandspad?
Ja. De Workbook constructor heeft overloads die een Stream object accepteren. Geef uw stream mee samen met een LoadOptions instantie als fouttolerante laden nodig is.
Ondersteunt de bibliotheek het laden van met wachtwoord beveiligde XLSX‑bestanden?
Wachtwoordbeveiligde bestanden maken geen deel uit van de huidige API-surface. Het proberen te laden van een bestand zal resulteren in een WorkbookLoadException.
Hoe controleer ik welke sheet actief is in de geladen werkmap?
Lees Workbook.Worksheets.ActiveSheetName om de naam van het blad te krijgen dat laatst actief was toen het bestand werd opgeslagen.
Kan ik meerdere XLSX‑bestanden gelijktijdig laden?
Ja. Elke Workbook‑instantie is onafhankelijk. Je kunt meerdere Workbook‑objecten op afzonderlijke threads instantiëren zonder gedeelde staat.
Wat gebeurt er als een formulecel wordt geladen en het gecachte resultaat ontbreekt?
Cell.StringValue retourneert een lege tekenreeks. Cell.Formula retourneert nog steeds de formuletekenreeks. De gecachte waarde wordt alleen gevuld wanneer Excel (of een compatibele toepassing) het bestand opent en opslaat.