Comment charger une feuille de calcul en .NET
Aspose.Cells FOSS for .NET vous permet d’ouvrir des feuilles de calcul XLSX existantes avec un seul appel au constructeur et fournit un chemin de chargement tolérant aux fautes pour les fichiers présentant une corruption structurelle mineure. Installez la bibliothèque depuis NuGet avec dotnet add package Aspose.Cells_FOSS.
Guide étape par étape
Étape 1 : Installer le Package
dotnet add package Aspose.Cells_FOSSVérifiez que le package est présent :
dotnet list package | grep Aspose.Cells_FOSSÉtape 2 : Importer l’espace de noms
Ajoutez cette directive en haut de votre fichier C#.
using Aspose.Cells_FOSS;Étape 3 : charger un fichier XLSX
Passez le chemin du fichier au constructeur Workbook. La bibliothèque lit le fichier XLSX et remplit l’objet classeur en mémoire.
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);Étape 4 : Charger avec des options de réparation tolérantes aux fautes
Pour les fichiers susceptibles d’avoir une corruption ZIP ou XML, fournissez un objet LoadOptions avec TryRepairPackage et TryRepairXml définis sur true. Enveloppez l’appel dans un try/catch pour WorkbookLoadException au cas où le fichier serait irrécupérable.
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);
}Étape 5 : Vérifier les diagnostics de chargement
Après le chargement, inspectez Workbook.LoadDiagnostics pour voir si la bibliothèque a appliqué des réparations. HasRepairs est true si une réparation a été appliquée ; HasDataLossRisk est true si des données ont pu être supprimées. Parcourez Issues pour accéder aux enregistrements DiagnosticEntry individuels.
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.");
}Étape 6 : Accéder aux données de la feuille de calcul
Après le chargement, accédez aux feuilles de calcul par index ou par nom, et lisez les valeurs des cellules en utilisant Cell.StringValue ou 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);Problèmes courants et solutions
WorkbookLoadException est levé même avec les options de réparation activées.
Cela signifie que la structure ZIP du fichier est trop endommagée pour que les algorithmes de réparation puissent la récupérer. Vérifiez que le fichier est une archive ZIP valide (par ex. essayez unzip -t file.xlsx). Si le fichier est complètement corrompu, il ne peut être ouvert par aucune bibliothèque.
Le classeur chargé possède moins de feuilles que prévu.
Une opération de réparation a peut‑être supprimé des feuilles de calcul qui faisaient référence à des parties manquantes. Vérifiez LoadDiagnostics.Issues pour les entrées contenant DataLossRisk = true et informez l’utilisateur.
Les valeurs des cellules sont vides après le chargement.
Assurez-vous d’accéder à l’index ou au nom de la feuille de calcul correct. Utilisez wb.Worksheets.Count pour confirmer le nombre de feuilles attendu. Vérifiez également que le fichier XLSX n’est pas protégé par mot de passe (les fichiers protégés par mot de passe ne sont pas actuellement pris en charge).
Workbook le constructeur se bloque sur un fichier volumineux.
Le constructeur est synchrone et charge le fichier entier en mémoire. Pour les fichiers très volumineux, exécutez le chargement sur un thread d’arrière‑plan afin de garder l’interface utilisateur réactive.
DiagnosticEntry.Severity montre Error mais HasRepairs est false.
HasRepairs reflète si une réparation a été appliquée avec succès, pas si des erreurs ont été détectées. Une entrée de gravité Error avec RepairApplied = false signifie que le problème a été détecté mais n’a pas pu être réparé — traitez cela comme un avertissement possible d’intégrité des données.
Foire aux questions
Puis-je charger un fichier XLSX à partir d’un flux au lieu d’un chemin de fichier ?
Oui. Le constructeur Workbook possède des surcharges qui acceptent un objet Stream. Passez votre flux avec une instance LoadOptions si un chargement tolérant aux fautes est nécessaire.
La bibliothèque prend‑elle en charge le chargement de fichiers XLSX protégés par mot de passe ?
Les fichiers protégés par mot de passe ne font pas partie de la surface d’API actuelle. Tenter d’en charger un entraînera une WorkbookLoadException.
Comment vérifier quelle feuille est active dans le classeur chargé ?
Lisez Workbook.Worksheets.ActiveSheetName pour obtenir le nom de la feuille qui était active en dernier lorsque le fichier a été enregistré.
Puis-je charger plusieurs fichiers XLSX simultanément ?
Oui. Chaque instance Workbook est indépendante. Vous pouvez instancier plusieurs objets Workbook sur des threads séparés sans état partagé.
Que se passe-t-il si une cellule de formule est chargée et que le résultat mis en cache est absent ?
Cell.StringValue renvoie une chaîne vide. Cell.Formula renvoie toujours la chaîne de formule. La valeur mise en cache n’est remplie que lorsque Excel (ou une application compatible) ouvre et enregistre le fichier.