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:: PackageModel L’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.UnsupportedParts per scoprire parti non standard che possono essere silenziosamente abbandonate in andata e ritorno.
  • Prendere il pesce PackageStructureException oltre a: WorkbookLoadException quando si caricano file da fonti non affidabili.
  • Il Consiglio ha adottato: IPackageReader/IPackageWriter le 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 pubblicazioneCausa di morteRettifica
PackageStructureException a caricoManca la relazione OPC richiestaSet di dati TryRepairPackage = true in LoadOptions; controllare LoadDiagnostics.Issues dopo il carico
UnsupportedParts non vuoto.File contenente estensioni non standardQueste parti sono conservate letteralmente se non erano presenti al carico.
Altri prodotti IPackageReader non richiamatoPassato al costruttore sbagliato sovraccaricoAssicurare 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 / InterfacciaDescrizione
IPackageReaderInterfaccia per la lettura di un pacchetto OPC (Read metodo)
IPackageWriterInterfaccia per la scrittura di un pacchetto OPC (Write metodo)
PackageLoadContextLegami a Workbook al suo PackageModel
PackageLoadContext.PackageRitorna il valore di PackageModel
PackageModel.PartsTutti i contenuti della confezione
PackageModel.RelationshipsInformazioni relative al CPO
PackageModel.UnsupportedPartsParti non trattate dalla biblioteca
PackagePartDescriptor.PartUriURI OPC per la parte
PackagePartDescriptor.ContentTypeTipo di contenuto MIME della parte
PackagePartDescriptor.CategoryCategoria logica (folder, stili ecc.)
PackageStructureExceptionSottolineato per violazioni strutturali dell’OPC
 Italiano