Lucrarea cu OOXML Packaging

Lucrarea cu OOXML Packaging

Un fișier XLSX este o arhivă ZIP Open Packaging Convention (OPC). Aspose.Cells FOSS pentru .NET expune stratul de pachet care stă la baza prin intermediul unui proces de descărcare a datelor, astfel încât să poată fi accesat în orice formă și cu toate informațiile necesare. IPackageReader, IPackageWriter, şi a PackageModel Acestea sunt API-uri de nivel scăzut destinate diagnosticării și instrumentelor majoritatea aplicațiilor folosesc doar graficul de înaltă calitate. Workbook clasa.


Model de ambalaj

PackageModel reprezintă conținutul logic al unei arhive XLSX. Expune trei colecții: Parts (toate părțile de conținut), Relationships (înregistrări privind relațiile OPC) și UnsupportedParts (parţi prezenţi în fişier pe care biblioteca nu le procesează). PackagePartDescriptor cu: 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);

Notă:: PackageModel este completat intern atunci când se încărcă un fișier XLSX. Instanțierea directă nu face parte din fluxul de lucru standard la nivel înalt.


IPacetareReader șiIPaceteWriter

IPackageReader definește un singur element de bază. Read() metodă de citire a unui pachet OPC. IPackageWriter definește un singur element de bază. Write() Aceste interfețe sunt implementate de cititorul/scrisorul intern bazat pe ZIP al bibliotecii și pot fi furnizate prin implementații personalizate pentru scenarii în memorie sau stocare cloud.

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

PackageStructureException

PackageStructureException este aruncat atunci când structura pachetului XLSX este fundamental nevaloroasă de exemplu, atunci cand lipsește relațiile OPC necesare. Extinde ierarhia excepției generale și poartă un mesaj care descrie ce invariant structural a fost încălcat.

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

Sfaturi şi cele mai bune practici

  • Utilizare: PackageModel.UnsupportedParts pentru a descoperi părți nestandard care pot fi abandonate în liniște pe drum.
  • Captura PackageStructureException în plus față de: WorkbookLoadException atunci când încărcați fișiere din surse neconfidențiale.
  • În ceea ce priveşte IPackageReader/IPackageWriter Interfețele sunt puncte de extensie; implementați-le numai atunci când aveți nevoie de stocare personalizată (de exemplu, încărcarea dintr-un blob cloud fără un fișier local).
  • Pentru cele mai multe diagnosticări, LoadDiagnostics (accesibil prin intermediul: Workbook.LoadDiagnosticsscăderea la stratul de ambalare este rareori necesară.

Probleme comune

Numărul de dateCauzaFixare
PackageStructureException în încărcareLipsește relația OPC necesarăSetare TryRepairPackage = true în LoadOptions; verificare LoadDiagnostics.Issues după încărcare
UnsupportedParts nu gol.Fişier conţine extensii ne-standardAceste piese sunt conservate literalmente la excepția cazului în care acestea au fost prezente la încărcare.
Cauze de taxe IPackageReader nu se invocăTrecut la supraîncărcarea constructorului greșitAsigurarea LoadOptions sau constructor de supraîncărcare acceptarea cititor personalizat este utilizată

FAQ

Trebuie să folosesc IPackageReader/IPackerWriter pentru lucrul normal cu fișele de calcul?

Nu. Aceste interfeţe sunt puncte de extensie pentru scenarii avansate. Toate operaţiile standard de citire/scris trec prin Workbook directă.

Sunt păstrate părțile neînsoțite pe salvare?

Părți enumerate în: PackageModel.UnsupportedParts Dacă este necesară fidelitatea de întoarcere pentru piesele nestandard, se utilizează un pas post-procesare la nivelul fermoarelor.

Care este diferența dintre PackageStructureException și WorkbookLoadExcept?

PackageStructureException indică o eroare la nivelul OPC/ZIP (tip de conținut lipsă, relație ruptă). WorkbookLoadException indică o eroare semantica sau de analiză la nivel superior în conținutul XLSX.


Rezultatele de la data aplicării.

Clasa / InterfațăDescriere:
IPackageReaderInterfață pentru citirea unui pachet OPC (Read (metoda de identificare)
IPackageWriterInterfață pentru scrierea unui pachet OPC (Write (metoda de identificare)
PackageLoadContextLegături a Workbook la nivelul său PackageModel
PackageLoadContext.PackageRetoară data de la intrare. PackageModel
PackageModel.PartsToate părțile de conținut din ambalaj
PackageModel.RelationshipsArticolul 2 alineatul (1) litera (a) din Regulamentul delegat (UE) nr. 575/2013.
PackageModel.UnsupportedPartsPiese care nu sunt prelucrate de bibliotecă
PackagePartDescriptor.PartUriURI OPC pentru piesă
PackagePartDescriptor.ContentTypeTipul de conținut MIME al părții
PackagePartDescriptor.CategoryCategorie logică (flata de lucru, stiluri etc.)
PackageStructureExceptionAruncate pe încălcări structurale OPC
 Română