Travailler avec le packaging OOXML

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: PackageModel est 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.UnsupportedParts Découvrir des pièces non standard qui peuvent être silencieusement jetées sur un parcours rond.
  • Catch PackageStructureException En plus de WorkbookLoadException Lorsque vous téléchargez des fichiers à partir de sources non confiées.
  • Le IPackageReader/IPackageWriter Les 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 de Workbook.LoadDiagnostics) est suffisant - la coupe à la caméra de paquet est rarement nécessaire.

Les problèmes communs

ProblèmeCauseFixé
PackageStructureException sur le chargementLe rapport de l’OPC manquantSélection TryRepairPackage = true dans LoadOptions;• Vérifier LoadDiagnostics.Issues Après la charge
UnsupportedParts pas videLe fichier contient des extensions non standardCes pièces sont conservées verbatim sur sauvegarde si elles étaient présentes à charge.
Custom IPackageReader Pas invitéPassé à l’erreur de constructeur surchargeAssurez-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 / InterfaceDescription
IPackageReaderL’interface pour la lecture d’un paquet OPC (Read méthode)
IPackageWriterL’interface pour écrire un paquet OPC (Write méthode)
PackageLoadContextBande à Workbook à sa PackageModel
PackageLoadContext.PackageRetourner le PackageModel
PackageModel.PartsTous les contenus dans le paquet
PackageModel.RelationshipsLes relations OPC
PackageModel.UnsupportedPartsLes pièces non traitées par la bibliothèque
PackagePartDescriptor.PartUriOPC URI pour le parti
PackagePartDescriptor.ContentTypeType de contenu MIME du parti
PackagePartDescriptor.CategoryCatégorie logique (worksheet, styles, etc.)
PackageStructureExceptionLes violations structurelles de l’OPC

Voir aussi

 Français