Treballar amb OOXML Packaging

Treballar amb OOXML Packaging

Treballar amb OOXML Packaging

Un fitxer XLSX és un arxiu ZIP de la Convenció d’Embalage obert (OPC). Aspose.Cells FOSS per a .NET exposa l’estratègia subjacent del paquet mitjançant: IPackageReader, IPackageWriter, i el PackageModel object graph. Aquestes són API de baix nivell destinades a diagnòstics i ferramentas la majoria d’aplicacions utilitzen només el tipus de l’API de alt nivell Workbook classe.


Modell de paquet

PackageModel representa el contingut lògic d’un arxiu XLSX. Exposeix tres col·leccions: Parts (totes les parts de contingut), Relationships (Entrades de relació amb la OPC) i UnsupportedParts Cada part és descrita per un document de la biblioteca. PackagePartDescriptor amb: PartUri, ContentType, i 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:: PackageModel La instància directa no forma part del flux de treball estàndard d’alt nivell.


IPpackageReader i IPackagewriter

IPackageReader defineix un sol Read() mètode per llegir un paquet OPC. IPackageWriter defineix un sol Write() Aquestes interfícies són implementades pel lector / escriptor intern basat en ZIP de la biblioteca i poden ser subministrats per implementacions personalitzades per a escenaris d’emmagatzematge o emmagatzemament en el núvol.

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

PackageStructureException

PackageStructureException s’emprèn quan l’estructura del paquet XLSX és fonamentalment invàlida per exemple, quan no hi ha relacions OPC requeres. Extensa la jerarquia d’excepció general i porta un missatge que descriu quin invariant estructural va ser violat.

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

Consells i millors pràctiques

  • Utilització: PackageModel.UnsupportedParts Per descobrir parts no estàndard que poden ser deixades en silenci durant el viatge d’anar i venir.
  • Captura PackageStructureException a més de: WorkbookLoadException quan es carguen arxius de fonts no fiables.
  • El IPackageReader/IPackageWriter les interfícies són punts d’extensió; implementa-les només quan necessites un emmagatzematge personalitzat (per exemple, carregament des d’un blob de núvol sense un fitxer local).
  • Per a la majoria dels diagnòstics, LoadDiagnostics (accessible a través de: Workbook.LoadDiagnostics) és suficient rarament cal deixar-ho en la capa de paquet.

Problemàtiques comuns

EdicióCausaCorrecció
PackageStructureException en càrregaNo hi ha relació OPC requeridaSet de punts TryRepairPackage = true en el LoadOptions; comprovar LoadDiagnostics.Issues després de la càrrega.
UnsupportedParts no buida.Arxiu que conté extensions no estàndardAquestes parts es conserven literalment en l’excepció si estaven presents a la càrrega.
Costum IPackageReader No invocat.Passat a la sobrecarrega del constructor equivocat.Assegurar la LoadOptions o s’utilitza sobrecarga de constructor que accepta el lector personalitzat

FAQ

He de fer servir IPackageReader/IPackerWriter per a la seva feina normal?

No. Aquestes interfícies són punts d’extensió per a escenaris avançats. Totes les operacions estàndard de lectura/escriptura passen pel sistema de correcció del diagrama. Workbook directament.

Les parts no suportades es conserven en salvament?

Partes enumerades en: PackageModel.UnsupportedParts Si es requereix fidelitat d’anar i venir per a peces no estàndard, s’utilitza un pas de post-elaboració al nivell del zip.

Quina és la diferència entre PackageStructureException i WorkbookLoadExcept?

PackageStructureException indica un error a nivell OPC/ZIP (tipus de contingut mancant, relació trencada). WorkbookLoadException indica un error d’anàlisi o semàntic de nivell superior en el contingut XLSX.


Resum de referència d’API

Classe / InterfícieDescripció
IPackageReaderInterfície per a la lectura d’un paquet OPC (Read mètode)
IPackageWriterInterfície per a escriure un paquet OPC (Write mètode)
PackageLoadContextEnllaços a Workbook a la seva PackageModel
PackageLoadContext.PackageRetorna el nombre de punts. PackageModel
PackageModel.PartsTots els elements del paquet
PackageModel.RelationshipsEntrades de relació amb la OPC
PackageModel.UnsupportedPartsPartes no tractades per la biblioteca
PackagePartDescriptor.PartUriURI de la part OPC
PackagePartDescriptor.ContentTypeTipus de contingut MIME de la part
PackagePartDescriptor.CategoryCategoria lògica (folla de treball, estils, etc.)
PackageStructureExceptionArrossegada a violacions estructurals de la OPC
 Català