Com carregar un full de càlcul a .NET

Com carregar un full de càlcul a .NET

Aspose.Cells FOSS for .NET us permet obrir fulls de càlcul XLSX existents amb una única crida al constructor i ofereix una ruta de càrrega tolerant a errors per a fitxers que tenen una corrupció estructural menor. Instal·leu la biblioteca des de NuGet amb dotnet add package Aspose.Cells_FOSS.

Guia pas a pas

Pas 1: Instal·la el paquet

dotnet add package Aspose.Cells_FOSS

Verifiqueu que el paquet estigui present:

dotnet list package | grep Aspose.Cells_FOSS

Pas 2: Importa l’espai de noms

Afegeix aquesta directiva a la part superior del teu fitxer C#:

using Aspose.Cells_FOSS;

Pas 3: Carrega un fitxer XLSX

Passeu la ruta del fitxer al constructor Workbook. La biblioteca llegeix el fitxer XLSX i omple l’objecte de llibre de treball en memòria.

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

Pas 4: Carrega amb opcions de reparació tolerant a fallades

Per a fitxers que puguin tenir corrupció ZIP o XML, proporcioneu un objecte LoadOptions amb TryRepairPackage i TryRepairXml establerts a true. Envolgueu la crida en un try/catch per a WorkbookLoadException en cas que el fitxer sigui irrecuperable.

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

Pas 5: Comprovar diagnòstics de càrrega

Després de carregar, inspeccione Workbook.LoadDiagnostics per veure si la biblioteca va aplicar alguna reparació. HasRepairs és true si s’ha aplicat alguna reparació; HasDataLossRisk és true si les dades poden haver estat descartades. Itera Issues per accedir a registres individuals de 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.");
}

Pas 6: Accedir a les dades del full de càlcul

Després de carregar, accediu a les fulles de càlcul per índex o nom i llegiu els valors de les cel·les mitjançant Cell.StringValue o 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);

Problemes comuns i solucions

WorkbookLoadException es llança fins i tot amb les opcions de reparació activades.
Això significa que l’estructura ZIP del fitxer està massa danyada perquè els algoritmes de reparació la puguin recuperar. Verifiqueu que el fitxer sigui un arxiu ZIP vàlid (p. ex., proveu unzip -t file.xlsx). Si el fitxer està completament corrupte, no es pot obrir amb cap biblioteca.

El llibre de treball carregat té menys fulls del que s’esperava. Una operació de reparació pot haver eliminat fulls de càlcul que feien referència a parts que falten. Comproveu LoadDiagnostics.Issues per a entrades amb DataLossRisk = true i notifiqueu l’usuari.

Els valors de les cel·les són buits després de la càrrega.
Assegureu-vos que esteu accedint a l’índex o nom de full de càlcul correcte. Utilitzeu wb.Worksheets.Count per confirmar el nombre esperat de fulls. També comproveu que el fitxer XLSX no estigui protegit amb contrasenya (els fitxers protegits amb contrasenya actualment no són compatibles).

Workbook el constructor es penja amb un fitxer gran.
El constructor és sincrònic i carrega tot el fitxer a la memòria. Per a fitxers molt grans, executeu la càrrega en un fil d’execució en segon pla per mantenir la interfície d’usuari responsiva.

DiagnosticEntry.Severity mostra Error però HasRepairs és false. HasRepairs reflecteix si una reparació s’ha aplicat amb èxit, no si s’han detectat errors. Una entrada de gravetat Error amb RepairApplied = false significa que el problema s’ha detectat però no es pot reparar — tracteu-ho com una possible advertència d’integritat de dades.

Preguntes freqüents

Puc carregar un fitxer XLSX des d’un Stream en comptes d’una ruta de fitxer?

Sí. El constructor Workbook té sobrecàrregues que accepten un objecte Stream. Passeu el vostre flux juntament amb una instància LoadOptions si es necessita una càrrega tolerant a errors.

La biblioteca admet la càrrega de fitxers XLSX protegits amb contrasenya?

Els fitxers protegits per contrasenya no formen part de la superfície actual de l’API. Intentar carregar-ne un donarà com a resultat un WorkbookLoadException.

Com comprovo quina fulla està activa al llibre de treball carregat?

Llegeix Workbook.Worksheets.ActiveSheetName per obtenir el nom del full que estava actiu per darrer cop quan es va desar el fitxer.

Puc carregar múltiples fitxers XLSX simultàniament?

Sí. Cada instància Workbook és independent. Podeu instanciar múltiples objectes Workbook en fils separats sense estat compartit.

Què passa si es carrega una cel·la de fórmula i el resultat en memòria cau és absent?

Cell.StringValue retorna una cadena buida. Cell.Formula encara retorna la cadena de fórmula. El valor en memòria cau només s’omple quan Excel (o una aplicació compatible) obre i desa el fitxer.

Vegeu també

 Català