Arbejde med OOXML Packaging
Arbejde med OOXML Packaging
En XLSX-fil er et ZIP-arkiv af Open Packaging Convention (OPC). Aspose.Cells FOSS for .NET udsætter det underliggende pakkeslag gennem IPackageReader, IPackageWriter, og den PackageModel Objektgraf. Dette er API’er på lavt niveau, der er beregnet til diagnostik og værktøjsskabelse de fleste applikationer bruger kun det højtstående niveau af interfaces i et program. Workbook - Det er en klasse.
Pakkemodel
PackageModel repræsenterer det logiske indhold i et XLSX-arkiv. Det udstiller tre samlinger: Parts (alle indholdsdele), Relationships (optagelser i forbindelse med OPC) og UnsupportedParts (dele, der er til stede i filen og som biblioteket ikke behandler). Hver del beskrives af en PackagePartDescriptor med: PartUri, ContentType, og 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);Bemærkning::
PackageModeler indbygget internt, når en XLSX-fil bliver lastet. Direkte instansiering er ikke en del af den standardiserede arbejdsproces på højt niveau.
IPackageReader og IPackewriter
IPackageReader definerer en enkelt Read() metode til aflæsning af en OPC-pakke. IPackageWriter definerer en enkelt Write() Disse grænseflader implementeres af bibliotekets interne ZIP-baserede læser/skriver og kan leveres ved brugerdefinerede implementeringer til in-memory eller cloud-opbevaringsscenarier.
// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }PackageStructureException
PackageStructureException er kastet, når XLSX-pakkestrukturen i det væsentlige er ugyldig f.eks., når der mangler nødvendige OPC-relationer. Det udvider den generelle undtagelseshierarki og bærer en meddelelse om hvilken strukturel invariant der blev overtrådt.
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);
}Tips og bedste praksis
- Anvendelse:
PackageModel.UnsupportedPartsat opdage ikke-standarddele, der kan blive smidt ned i ro på returrejse. - Fanger
PackageStructureExceptionUd over:WorkbookLoadExceptionved indlæse af filer fra ikke-tillidsorgsmidler. - Den Europæiske Union
IPackageReader/IPackageWriterInterfacer er udvidelsespunkter; implementer dem kun, når du har brug for tilpasset lagring (f.eks. indlæse fra en cloudblob uden lokal fil). - For de fleste diagnoser,
LoadDiagnostics(tilgængelig via:Workbook.LoadDiagnostics) er tilstrækkeligt det sjældent er nødvendigt at trække den ned i pakningslaget.
Almindelige problemer
| Udgave: | Årsagen til dette | Forklaret |
|---|---|---|
PackageStructureException på last | Fraværende OPC-forhold | Indstilling TryRepairPackage = true i den LoadOptions; tjekke LoadDiagnostics.Issues efter lastning |
UnsupportedParts ikke tomt | Filen indeholder ikke-standard udvidelser | Disse dele er bevaret bogstaveligt talt på save, hvis de var til stede under belastning. |
Toldpenge IPackageReader ikke påberåbt | Overført til forkert konstruktor overbelastning | Det er vigtigt at sikre, at de LoadOptions eller konstruktor overbelastning accepterer den brugerdefinerede læser anvendes |
FAQ
Skal jeg bruge IPackageReader/IPactWriter til almindeligt regnearkarbejde?
Nej, disse grænseflader er udvidelsespunkter til avancerede scenarier. Alle standardlæs-/skrivoperationer gennemføres af en computer med et program for at få adgang til alle programmerne i den pågældende enhed. Workbook direkte.
Er de ikke-understøttede dele bevaret på save?
Dele, der er opført i: PackageModel.UnsupportedParts Hvis der kræves retur- og returfastsættelse for ikkestandarddele, skal der anvendes et postbearbejdningsskritt på zip-niveau.
Hvad er forskellen mellem PackageStructureException og WorkbookLoadExcept?
PackageStructureException angiver en fejl på OPC/ZIP-niveau (manglende indholdstype, brudt forhold). WorkbookLoadException angiver et parserings- eller semantisk fejl på højere niveau i XLSX-indholdet.
API-referenceoversigt
| Klasse / grænseflader | Beskrivelse: |
|---|---|
IPackageReader | Grænseflade til læsning af en OPC-pakke (Read metode) |
IPackageWriter | Grænseflade til at skrive en OPC-pakke (Write metode) |
PackageLoadContext | Bindes a Workbook til sin PackageModel |
PackageLoadContext.Package | Returnerer den PackageModel |
PackageModel.Parts | Alle indholdsdele i pakken |
PackageModel.Relationships | OPC-relationer |
PackageModel.UnsupportedParts | Dele, der ikke er behandlet af biblioteket |
PackagePartDescriptor.PartUri | OPC-URI for den pågældende del |
PackagePartDescriptor.ContentType | Delens MIME-indholdstype |
PackagePartDescriptor.Category | Logisk kategori (arbejdsark, stilarter osv.) |
PackageStructureException | Ansvarlig for strukturovertrædelser i forbindelse med OPC |