Werken met OOXML Packaging

Werken met OOXML Packaging

Werken met OOXML-verpakking

Een XLSX-bestand is een Open Packaging Convention (OPC) ZIP-archief. Aspose.Cells FOSS voor .NET exposeert de onderliggende pakketlaag via IPackageReader, IPackageWriter en de PackageModel objectgrafiek. Dit zijn low-level API’s bedoeld voor diagnostiek en tooling — de meeste toepassingen gebruiken alleen de high-level Workbook klasse.


Pakketmodel

PackageModel vertegenwoordigt de logische inhoud van een XLSX-archief. Het biedt drie collecties: Parts (alle inhoudsdelen), Relationships (OPC-relatie-items), en UnsupportedParts (delen die aanwezig zijn in het bestand maar die de bibliotheek niet verwerkt). Elk deel wordt beschreven door een PackagePartDescriptor met PartUri, ContentType en 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 wordt intern gevuld bij het laden van een XLSX-bestand. Directe instantiering maakt geen deel uit van de standaard high-level workflow.


IPackageReader en IPackageWriter

IPackageReader definieert een enkele Read()-methode voor het lezen van een OPC-pakket. IPackageWriter definieert een enkele Write()-methode voor het schrijven ervan. Deze interfaces worden geïmplementeerd door de interne ZIP-gebaseerde lezer/schrijver van de bibliotheek en kunnen worden geleverd door aangepaste implementaties voor in-memory- of cloud-storage-scenario’s.

// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }

PackageStructureException

PackageStructureException wordt gegooid wanneer de XLSX-pakketstructuur fundamenteel ongeldig is — bijvoorbeeld wanneer verplichte OPC-relaties ontbreken. Het breidt de algemene exceptiehiërarchie uit en bevat een bericht dat beschrijft welke structurele invariant is geschonden.

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

Tips en best practices

  • Gebruik PackageModel.UnsupportedParts om niet-standaardonderdelen te ontdekken die stilzwijgend kunnen worden weggelaten bij een round-trip.
  • Vang PackageStructureException op naast WorkbookLoadException bij het laden van bestanden uit onbetrouwbare bronnen.
  • De IPackageReader/IPackageWriter interfaces zijn uitbreidingspunten; implementeer ze alleen wanneer je aangepaste opslag nodig hebt (bijv. laden vanuit een cloud-blob zonder lokaal bestand).
  • Voor de meeste diagnostiek is LoadDiagnostics (toegankelijk via Workbook.LoadDiagnostics) voldoende — dalen naar de pakkellaag is zelden nodig.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
PackageStructureException bij ladenVereiste OPC-relatie ontbreektStel TryRepairPackage = true in LoadOptions; controleer LoadDiagnostics.Issues na het laden
UnsupportedParts niet leegBestand bevat niet-standaard extensiesDeze onderdelen worden bij het opslaan letterlijk behouden als ze bij het laden aanwezig waren
Aangepaste IPackageReader niet aangeroepenDoorgestuurd naar verkeerde constructoroverloadZorg ervoor dat de LoadOptions of constructoroverload die de aangepaste lezer accepteert wordt gebruikt

FAQ

Moet ik IPackageReader/IPackageWriter gebruiken voor normaal spreadsheetwerk?

Nee. Deze interfaces zijn extensiepunten voor geavanceerde scenario’s. Alle standaard lees-/schrijfbewerkingen gaan rechtstreeks via Workbook.

Worden niet-ondersteunde delen bewaard bij opslaan?

Delen die in PackageModel.UnsupportedParts staan, worden niet verwerkt en kunnen mogelijk niet worden weggeschreven. Als round-trip-fidelity voor niet-standaarddelen vereist is, gebruik dan een post-processingstap op zip-niveau.

Wat is het verschil tussen PackageStructureException en WorkbookLoadException?

PackageStructureException duidt op een OPC/ZIP-niveau fout (ontbrekend contenttype, verbroken relatie). WorkbookLoadException duidt op een fout op hoger niveau bij het parsen of semantisch falen van de XLSX-inhoud.


API Reference Samenvatting

Klasse / InterfaceBeschrijving
IPackageReaderInterface voor het lezen van een OPC-pakket (Read methode)
IPackageWriterInterface voor het schrijven van een OPC-pakket (Write methode)
PackageLoadContextBindt een Workbook aan zijn PackageModel
PackageLoadContext.PackageRetourneert de PackageModel
PackageModel.PartsAlle inhoudsdelen in het pakket
PackageModel.RelationshipsOPC-relatievermeldingen
PackageModel.UnsupportedPartsOnderdelen die niet door de bibliotheek worden verwerkt
PackagePartDescriptor.PartUriOPC-URI voor het onderdeel
PackagePartDescriptor.ContentTypeMIME-inhoudstype van het onderdeel
PackagePartDescriptor.CategoryLogische categorie (werkblad, stijlen, enz.)
PackageStructureExceptionWordt gegooid bij OPC-structurele overtredingen

Zie ook

 Nederlands