Mit OOXML Packaging arbeiten

Mit OOXML Packaging arbeiten

Mit OOXML Packaging arbeiten

Ein XLSX-Datei ist ein Open Packaging Convention (OPC) ZIP-Archiv. Aspose.Cells FOSS für .NET zeigt die unteren Packungslager durch IPackageReader, IPackageWriter,Und die PackageModel Dies sind niedriges Niveau APIs, die für Diagnose und Werkzeugherstellung bestimmt sind – die meisten Anwendungen verwenden nur das hohe Niveau Workbook Klasse zu.


Paketmodell

PackageModel es stellt die logischen Inhalte eines XLSX-Archives dar. Es zeigt drei Sammlungen: Parts (alle Inhalte der Teile), Relationships (WEB die OPC-Verhältnisse und UnsupportedParts (Teile in der Datei, die die Bibliothek nicht verarbeitet). PackagePartDescriptor mit PartUri, ContentType,und 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 ist intern populiert, wenn Sie eine XLSX Datei laden. Direct Instantiation ist nicht Teil des Standard-High-Level Workflow.


IPackageReader und IPackageWriter

IPackageReader definiert eine Single Read() Methode zur Lesung eines OPC-Pakets. IPackageWriter definiert eine Single Write() Diese Interfaces werden von der ZIP-basierten internen Leser/Writer der Bibliothek implementiert und können durch benutzerdefinierte Implementierungen für In-Memory oder Cloud-Speicher-Szenarien bereitgestellt werden.

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

PackageStructureException

PackageStructureException wird gestohlen, wenn die XLSX-Paketstruktur grundsätzlich unfunktionell ist – zum Beispiel, wenn erforderliche OPC-Verhältnisse fehlen. Es erweitert die allgemeine Ausnahmehierarchie und trägt eine Nachricht, die beschreibt, welche strukturelle Invariante verletzt wurde.

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

Tipps und beste Praktiken

  • Gebrauch PackageModel.UnsupportedParts zu unstandard Teilen entdecken, die auf rundem Weg still gelassen werden können.
  • Fang PackageStructureException Zusätzlich zu WorkbookLoadException bei der Laden von Dateien aus unvertrauen Quellen.
  • Die IPackageReader/IPackageWriter Interfaces sind Erweiterungsstellen; sie werden nur implementiert, wenn Sie eine angepasste Speicherung benötigen (z. B. Laden von einem Cloud-Block ohne eine lokale Datei).
  • Für die meisten Diagnosen, LoadDiagnostics (verträglich über Workbook.LoadDiagnostics) ist genug - die Abnahme in das Packungslager ist selten notwendig.

Gemeinsame Probleme

ThemaUrsacheFix
PackageStructureException auf LastOPC-Verhältnisse fehlenSet TryRepairPackage = true In LoadOptions;· Check LoadDiagnostics.Issues Nach dem Laden
UnsupportedParts nicht leerDatei enthält nicht-standard-ErweiterungenDiese Teile werden verbatim auf Speicherung erhalten, wenn sie bei der Ladung vorhanden waren
Customer IPackageReader nicht aufgerufenÜbersetzt auf falsche Konstruktor Überschwemmungsicherstellen Sie die LoadOptions oder Konstruktor überlastet, der den benutzerdefinierten Leser akzeptiert wird

FAQ

Brauche ich IPackageReader/IPackageWriter für die normale Arbeitsweise?

No. Diese Schnittstellen sind Erweiterungspunkte für fortgeschrittene Szenarien. Alle Standard-Lese/Schrift-Operationen gehen durch Workbook direkt zu.

Sind nicht unterstützte Teile auf der Speicherung erhalten?

Teile, die in PackageModel.UnsupportedParts nicht verarbeitet und kann nicht zurückgeschrieben werden. Wenn die Runde-Trip-Glaubwürdigkeit für nicht-standardteile erforderlich ist, verwenden Sie einen Zip-Level-Post-Verarbeitungsschritt.

Was ist der Unterschied zwischen PackageStructureException und WorkbookLoadException?

PackageStructureException Zeigt auf eine OPC/ZIP-Level-Fehler (Verlust von Inhaltstyp, gebrochenen Beziehung). WorkbookLoadException Indiziert eine höhere Parse oder eine semantische Scheiternsituation im XLSX-Inhalt.


API Referenzabschnitt

Klasse / InterfaceBeschreibung
IPackageReaderInterface für das Lesen eines OPC-Pakets (Read Methode )
IPackageWriterInterface für die Schreibung eines OPC-Pakets (Write Methode )
PackageLoadContextBindes A Workbook zu seiner PackageModel
PackageLoadContext.PackageZurück zum PackageModel
PackageModel.PartsAlle Inhaltsteile im Paket
PackageModel.RelationshipsOPC-Verhältnisse
PackageModel.UnsupportedPartsTeile, die nicht von der Bibliothek verarbeitet werden
PackagePartDescriptor.PartUriOPC URI für die Seite
PackagePartDescriptor.ContentTypeMIME Inhaltstyp des Teils
PackagePartDescriptor.CategoryLogische Kategorien (Worksheet, Stile usw.)
PackageStructureExceptionAufgrund von strukturellen Verstößen der OPC
 Deutsch