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.UnsupportedParts att upptäcka icke-standarddelar som kan vara tyst ned på rundtur.
  • Catch PackageStructureException Förutom att WorkbookLoadException När du laddar upp filer från osäkra källor.
  • Den IPackageReader/IPackageWriter Grä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 via Workbook.LoadDiagnostics) är tillräckligt - att kasta på förpackningsskiktet är sällan nödvändigt.

Vanliga frågor

IssueCauseFixar
PackageStructureException på lastOPS-relationer saknasSetade TryRepairPackage = true i LoadOptions;· Kontrollera LoadDiagnostics.Issues Efter lastning
UnsupportedParts inte tomtFilen innehåller icke-standard förlängningarDessa delar bevaras verbatim på spara om de var närvarande vid last.
Custom IPackageReader inte inbjudnaÖverbelastning på fel konstruktorSe 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änssnittBeskrivning
IPackageReaderInterface för att läsa en OPC-paket (Read Metod)
IPackageWriterInterface för att skriva ett OPC-paket (Write Metod)
PackageLoadContextBindar A Workbook till sin PackageModel
PackageLoadContext.Packageåtervänder till den PackageModel
PackageModel.PartsAlla innehållsdelar i paketet
PackageModel.RelationshipsOPC relationer ingångar
PackageModel.UnsupportedPartsDelar som inte behandlas av biblioteket
PackagePartDescriptor.PartUriOPC URI för sidan
PackagePartDescriptor.ContentTypeMIME innehållstyp av delen
PackagePartDescriptor.CategoryLogiska kategorier (arbetsblad, stilar etc.)
PackageStructureExceptionFördelar med OPC:s strukturella överträdelser

Se även

 Svenska