Lavorare con OOXML Packaging
Lavorare con OOXML Packaging
Un file XLSX è un archivio ZIP Open Packaging Convention (OPC). Aspose.Cells FOSS per .NET espone il livello di pacchetto sottostante attraverso IPackageReader, IPackageWriter, e il PackageModel Grafico oggettivo. Si tratta di API a basso livello destinate alla diagnostica e all’utilizzazione la maggior parte delle applicazioni utilizza solo l’API ad alto livello Workbook - La classe.
Modello di pacchetto
PackageModel Rappresenta il contenuto logico di un archivio XLSX. Espose tre collezioni: Parts (tutti i contenuti), Relationships (scritte relative al CPO), e UnsupportedParts (parti presenti nel file che la biblioteca non elabora). PackagePartDescriptor con: PartUri, ContentType, e 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);Nota di seguito::
PackageModelL’istanzazione diretta non fa parte del flusso di lavoro standard ad alto livello.
IPacchettoReader e IPackageWriter
IPackageReader definisce un singolo Read() metodo per la lettura di un pacchetto OPC. IPackageWriter definisce un singolo Write() Le interfacce sono implementate dall’intero lettore/scrittore basato su ZIP della biblioteca e possono essere fornite da implementazioni personalizzate per scenari di memorizzazione in memoria o cloud.
// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }PackageStructureException
PackageStructureException viene lanciato quando la struttura del pacchetto XLSX è fondamentalmente non valida ad esempio, quando mancano le relazioni OPC richieste. Estende la gerarchia generale delle eccezioni e trasporta un messaggio che descrive quale invariante strutturale sia stata violata.
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);
}Suggerimenti e migliori pratiche
- Utilizzo:
PackageModel.UnsupportedPartsper scoprire parti non standard che possono essere silenziosamente abbandonate in andata e ritorno. - Prendere il pesce
PackageStructureExceptionoltre a:WorkbookLoadExceptionquando si caricano file da fonti non affidabili. - Il Consiglio ha adottato:
IPackageReader/IPackageWriterle interfacce sono punti di estensione; implementarle solo quando è necessario un storage personalizzato (ad esempio caricamento da cloud blob senza file locale). - Per la maggior parte delle diagnosi,
LoadDiagnostics(accessibile tramite:Workbook.LoadDiagnostics) è sufficiente raramente si deve scendere al livello di imballaggio.
Problemi comuni
| Numero di pubblicazione | Causa di morte | Rettifica |
|---|---|---|
PackageStructureException a carico | Manca la relazione OPC richiesta | Set di dati TryRepairPackage = true in LoadOptions; controllare LoadDiagnostics.Issues dopo il carico |
UnsupportedParts non vuoto. | File contenente estensioni non standard | Queste parti sono conservate letteralmente se non erano presenti al carico. |
Altri prodotti IPackageReader non richiamato | Passato al costruttore sbagliato sovraccarico | Assicurare che il LoadOptions o il costruttore sovraccarico che accetta la lettura personalizzata viene utilizzato |
FAQ
Devo usare IPackageReader/IPackerWriter per il normale lavoro con i fogli di calcolo?
No. Queste interfacce sono punti di estensione per scenari avanzati, tutte le operazioni standard di lettura/scrittura passano attraverso il sistema operativo e vengono utilizzate in modo più semplice. Workbook - In modo diretto.
Le parti non supportate sono conservate in salvataggio?
Parti elencate in: PackageModel.UnsupportedParts Se per le parti non standard è richiesta la fedeltà di andata e ritorno, si utilizza un passaggio post-elaborazione a zip.
Qual è la differenza tra PackageStructureException e WorkbookLoadExcept?
PackageStructureException indica un errore a livello OPC/ZIP (tip di contenuto mancante, relazione interrotta). WorkbookLoadException indica un errore di analisi o semantica a livello superiore nel contenuto XLSX.
Riassunto di riferimento API
| Classe / Interfaccia | Descrizione |
|---|---|
IPackageReader | Interfaccia per la lettura di un pacchetto OPC (Read metodo) |
IPackageWriter | Interfaccia per la scrittura di un pacchetto OPC (Write metodo) |
PackageLoadContext | Legami a Workbook al suo PackageModel |
PackageLoadContext.Package | Ritorna il valore di PackageModel |
PackageModel.Parts | Tutti i contenuti della confezione |
PackageModel.Relationships | Informazioni relative al CPO |
PackageModel.UnsupportedParts | Parti non trattate dalla biblioteca |
PackagePartDescriptor.PartUri | URI OPC per la parte |
PackagePartDescriptor.ContentType | Tipo di contenuto MIME della parte |
PackagePartDescriptor.Category | Categoria logica (folder, stili ecc.) |
PackageStructureException | Sottolineato per violazioni strutturali dell’OPC |