Arbeta med OOXML Packaging
Arbeta med OOXML Packaging
En XLSX-fil är en Open Packaging Convention (OPC) ZIP-arkiv. Aspose.Cells FOSS för .NET visar det underliggande paketlagret genom att använda den IPackageReader, IPackageWriter,och den PackageModel Dessa är låg nivå APIs avsedd för diagnostik och verktygsbehandling – de flesta applikationer använder endast hög nivå Workbook Klassen är.
Förpackningsmodell
PackageModel representerar logiska innehåll i en XLSX-arkiv. Det visar tre samlingar: Parts (Allt innehållsdelar), Relationships (OPC relationer entréer) och UnsupportedParts (delar som finns i filen som biblioteket inte behandlar). varje del beskrivs av en PackagePartDescriptor med PartUri, ContentType,och 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);Note:
PackageModelär lokaliserad intern när du laddar en XLSX-fil. Direkt instans är inte en del av standard högnivå arbetsflöde.
IPackageReader och IPacketWriter
IPackageReader Definiera en enda Read() Läsa ett OPC-paket. IPackageWriter Definiera en enda Write() Dessa gränssnitt implementeras av bibliotekets interna ZIP-baserade läsare/författare och kan levereras genom anpassade implementationer för in-minnes eller molnlagringsscenarier.
// Signature reference — not a complete runnable example
// public interface IPackageReader { void Read(...); }
// public interface IPackageWriter { void Write(...); }PackageStructureException
PackageStructureException kastas när XLSX-paketstrukturen är grundläggande invalid – till exempel när nödvändiga OPC-relationer saknas. det utökar den allmänna undantagshyrarkin och bär ett meddelande som beskriver vilken strukturell invariant som har kränkt.
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 och bästa praxis
- Användning
PackageModel.UnsupportedPartsatt upptäcka icke-standarddelar som kan vara tyst ned på rundtur. - Catch
PackageStructureExceptionFörutom attWorkbookLoadExceptionNär du laddar upp filer från osäkra källor. - Den
IPackageReader/IPackageWriterGränssnitt är förlängningspunkter; implementera dem endast när du behöver anpassad lagring (t.ex. ladda från en molnblob utan en lokal fil). - För de flesta diagnoser,
LoadDiagnostics(tillgänglig viaWorkbook.LoadDiagnostics) är tillräckligt - att kasta på förpackningsskiktet är sällan nödvändigt.
Vanliga frågor
| Issue | Cause | Fixar |
|---|---|---|
PackageStructureException på last | OPS-relationer saknas | Setade TryRepairPackage = true i LoadOptions;· Kontrollera LoadDiagnostics.Issues Efter lastning |
UnsupportedParts inte tomt | Filen innehåller icke-standard förlängningar | Dessa delar bevaras verbatim på spara om de var närvarande vid last. |
Custom IPackageReader inte inbjudna | Överbelastning på fel konstruktor | Se till att den LoadOptions eller konstruktör överbelastning accepterar den anpassade läsaren används |
FAQ
Behöver jag använda IPackageReader/IPackagesWriter för normal skivor?
Nej. Dessa gränssnitt är förlängningspunkter för avancerade scenarier. Alla standardläsning/skrivande operationer går igenom Workbook direkt från .
Är de ouppbyggda delarna bevarade?
Delar som listas i PackageModel.UnsupportedParts Om en rundtur-troende för icke-standarddelar krävs, använd ett zip-nivå post-processingsteg.
Vad är skillnaden mellan PackageStructureException och WorkbookLoadException?
PackageStructureException indikerar en OPC/ZIP-nivå misslyckande (förlust av innehållstyp, bruten relation). WorkbookLoadException indikerar en högre nivå parse eller semantisk misslyckande i XLSX-innehållet.
API Referens sammanfattning
| Klass / gränssnitt | Beskrivning |
|---|---|
IPackageReader | Interface för att läsa en OPC-paket (Read Metod) |
IPackageWriter | Interface för att skriva ett OPC-paket (Write Metod) |
PackageLoadContext | Bindar A Workbook till sin PackageModel |
PackageLoadContext.Package | återvänder till den PackageModel |
PackageModel.Parts | Alla innehållsdelar i paketet |
PackageModel.Relationships | OPC relationer ingångar |
PackageModel.UnsupportedParts | Delar som inte behandlas av biblioteket |
PackagePartDescriptor.PartUri | OPC URI för sidan |
PackagePartDescriptor.ContentType | MIME innehållstyp av delen |
PackagePartDescriptor.Category | Logiska kategorier (arbetsblad, stilar etc.) |
PackageStructureException | Fördelar med OPC:s strukturella överträdelser |