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:
PackageModelist 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.UnsupportedPartszu unstandard Teilen entdecken, die auf rundem Weg still gelassen werden können. - Fang
PackageStructureExceptionZusätzlich zuWorkbookLoadExceptionbei der Laden von Dateien aus unvertrauen Quellen. - Die
IPackageReader/IPackageWriterInterfaces 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 überWorkbook.LoadDiagnostics) ist genug - die Abnahme in das Packungslager ist selten notwendig.
Gemeinsame Probleme
| Thema | Ursache | Fix |
|---|---|---|
PackageStructureException auf Last | OPC-Verhältnisse fehlen | Set TryRepairPackage = true In LoadOptions;· Check LoadDiagnostics.Issues Nach dem Laden |
UnsupportedParts nicht leer | Datei enthält nicht-standard-Erweiterungen | Diese Teile werden verbatim auf Speicherung erhalten, wenn sie bei der Ladung vorhanden waren |
Customer IPackageReader nicht aufgerufen | Übersetzt auf falsche Konstruktor Überschwemmung | sicherstellen 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 / Interface | Beschreibung |
|---|---|
IPackageReader | Interface für das Lesen eines OPC-Pakets (Read Methode ) |
IPackageWriter | Interface für die Schreibung eines OPC-Pakets (Write Methode ) |
PackageLoadContext | Bindes A Workbook zu seiner PackageModel |
PackageLoadContext.Package | Zurück zum PackageModel |
PackageModel.Parts | Alle Inhaltsteile im Paket |
PackageModel.Relationships | OPC-Verhältnisse |
PackageModel.UnsupportedParts | Teile, die nicht von der Bibliothek verarbeitet werden |
PackagePartDescriptor.PartUri | OPC URI für die Seite |
PackagePartDescriptor.ContentType | MIME Inhaltstyp des Teils |
PackagePartDescriptor.Category | Logische Kategorien (Worksheet, Stile usw.) |
PackageStructureException | Aufgrund von strukturellen Verstößen der OPC |