Travailler avec le packaging OOXML
Travailler avec le packaging OOXML
Un fichier XLSX est un archive ZIP Open Packaging Convention (OPC). Aspose.Cells FOSS pour .NET expose la couche de package sous-jacente à travers le IPackageReader, IPackageWriter,Et le PackageModel Ce sont des APIs de faible niveau destinés aux diagnostics et à l’outilage – la plupart des applications utilisent uniquement les API de haut niveau. Workbook classe !.
Modèle de package
PackageModel Il représente le contenu logique d’un fichier XLSX. Il expose trois collections: Parts (Tout le contenu est en partie), Relationships (l’OPC est une association de l’opc) et UnsupportedParts (les parties présentes dans le fichier que la bibliothèque ne traite pas). chaque partie est décrit par un PackagePartDescriptor avec PartUri, ContentType,et Category.
using Aspose.Cells_FOSS;
// PackageModel is accessed via PackageLoadContext during custom load flows
// The following illustrates the object structure
// var context = new PackageLoadContext(workbook, packageModel);
// var model = context.Package;
// foreach (var part in model.Parts)
// {
// Console.WriteLine($"URI={part.PartUri}, Type={part.ContentType}");
// }
// Console.WriteLine("Unsupported parts: " + model.UnsupportedParts.Count);Note:
PackageModelest populé à l’intérieur lors de la téléchargement d’un fichier XLSX. Instance directe n’est pas partie du flux de travail standard de haut niveau.
IPackageReader et IPacageWriter
IPackageReader Définir un seul Read() La méthode de lecture d’un paquet OPC. IPackageWriter Définir un seul Write() Ces interfaces sont mis en œuvre par le lecteur/écrivain ZIP interne de la bibliothèque et peuvent être fournis par des applications personnalisées pour les scénarios de stockage in-mémory ou cloud.
// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }PackageStructureException
PackageStructureException Il est jeté lorsque la structure du paquet XLSX est fondamentalement infaillible - par exemple, quand les relations OPC nécessaires sont manquantes. il étend l’hérarchie d’exception générale et porte un message décrivant quel invariant structurel a été violé.
using Aspose.Cells_FOSS;
var opts = new LoadOptions { TryRepairPackage = true };
try
{
var wb = new Workbook("bad.xlsx", opts);
}
catch (PackageStructureException ex)
{
Console.WriteLine("OPC structure error: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Load error: " + ex.Message);
}Conseils et meilleures pratiques
- Utiliser
PackageModel.UnsupportedPartsDécouvrir des pièces non standard qui peuvent être silencieusement jetées sur un parcours rond. - Catch
PackageStructureExceptionEn plus deWorkbookLoadExceptionLorsque vous téléchargez des fichiers à partir de sources non confiées. - Le
IPackageReader/IPackageWriterLes interfaces sont des points d’extension ; ils ne sont mis en œuvre que lorsque vous avez besoin de stockage personnalisé (par exemple, le chargement à partir d’un bloc cloud sans un fichier local). - Pour la plupart des diagnostics,
LoadDiagnostics(Accessible par le biais deWorkbook.LoadDiagnostics) est suffisant - la coupe à la caméra de paquet est rarement nécessaire.
Les problèmes communs
| Problème | Cause | Fixé |
|---|---|---|
PackageStructureException sur le chargement | Le rapport de l’OPC manquant | Sélection TryRepairPackage = true dans LoadOptions;• Vérifier LoadDiagnostics.Issues Après la charge |
UnsupportedParts pas vide | Le fichier contient des extensions non standard | Ces pièces sont conservées verbatim sur sauvegarde si elles étaient présentes à charge. |
Custom IPackageReader Pas invité | Passé à l’erreur de constructeur surcharge | Assurez-vous que le LoadOptions ou surcharge constructeur acceptant le lecteur personnalisé est utilisé |
FAQ
Dois-je utiliser IPackageReader/IPackagesWriter pour le travail de la feuille d’écran normale?
Non. Ces interfaces sont des points d’extension pour les scénarios avancés.Toutes les opérations de lecture/écriture standard passent par Workbook directement .
Les pièces non soutenues sont-elles conservées ?
Les parties énumérées dans PackageModel.UnsupportedParts Si la fidélité de l’itinéraire pour les pièces non standard est requise, utilisez une étape post-processing à niveau zip.
Quelle est la différence entre PackageStructureException et WorkbookLoadEx exception ?
PackageStructureException indique un échec au niveau OPC/ZIP (perte de type de contenu, relation brisée). WorkbookLoadException indique un échec parse ou sémantique de niveau supérieur dans le contenu XLSX.
Le résumé de référence API
| Classes / Interface | Description |
|---|---|
IPackageReader | L’interface pour la lecture d’un paquet OPC (Read méthode) |
IPackageWriter | L’interface pour écrire un paquet OPC (Write méthode) |
PackageLoadContext | Bande à Workbook à sa PackageModel |
PackageLoadContext.Package | Retourner le PackageModel |
PackageModel.Parts | Tous les contenus dans le paquet |
PackageModel.Relationships | Les relations OPC |
PackageModel.UnsupportedParts | Les pièces non traitées par la bibliothèque |
PackagePartDescriptor.PartUri | OPC URI pour le parti |
PackagePartDescriptor.ContentType | Type de contenu MIME du parti |
PackagePartDescriptor.Category | Catégorie logique (worksheet, styles, etc.) |
PackageStructureException | Les violations structurelles de l’OPC |