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ă::
PackageModeleste 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.UnsupportedPartspentru a descoperi părți nestandard care pot fi abandonate în liniște pe drum. - Captura
PackageStructureExceptionîn plus față de:WorkbookLoadExceptionatunci când încărcați fișiere din surse neconfidențiale. - În ceea ce priveşte
IPackageReader/IPackageWriterInterfeț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 date | Cauza | Fixare |
|---|---|---|
PackageStructureException în încărcare | Lipseș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-standard | Aceste 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șit | Asigurarea 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: |
|---|---|
IPackageReader | Interfață pentru citirea unui pachet OPC (Read (metoda de identificare) |
IPackageWriter | Interfață pentru scrierea unui pachet OPC (Write (metoda de identificare) |
PackageLoadContext | Legături a Workbook la nivelul său PackageModel |
PackageLoadContext.Package | Retoară data de la intrare. PackageModel |
PackageModel.Parts | Toate părțile de conținut din ambalaj |
PackageModel.Relationships | Articolul 2 alineatul (1) litera (a) din Regulamentul delegat (UE) nr. 575/2013. |
PackageModel.UnsupportedParts | Piese care nu sunt prelucrate de bibliotecă |
PackagePartDescriptor.PartUri | URI OPC pentru piesă |
PackagePartDescriptor.ContentType | Tipul de conținut MIME al părții |
PackagePartDescriptor.Category | Categorie logică (flata de lucru, stiluri etc.) |
PackageStructureException | Aruncate pe încălcări structurale OPC |