Hvordan man arbejder med OOXML-pakninger i .NET

Hvordan man arbejder med OOXML-pakninger i .NET

En XLSX-fil er et ZIP-arkiv af Open Packaging Convention (OPC). Aspose.Cells FOSS for .NET udstiller den underliggende pakkesystemstruktur gennem PackageModel, PackagePartDescriptor, IPackageReader, og IPackageWriter.Disse er API’er på infrastrukturniveau, der primært bruges til diagnostik og brugerdefinerede implementeringer af lagring. Installer med dotnet add package Aspose.Cells_FOSS.

Trin-for-trin vejledning

Trin 1: Installer pakken

dotnet add package Aspose.Cells_FOSS

Trin 2: Import af navneområdet

using Aspose.Cells_FOSS;

Trin 3: Behandling af pakkestrukturundtagelser

PackageStructureException er kastet, når XLSX-pakken har en ugyldig OPC-struktur (f.eks. mangler nødvendige relationer). Fang den ved siden af WorkbookLoadException ved indlæse af filer fra ikke-tillidsorgsmidler.

using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true };

try
{
    var wb = new Workbook("suspect.xlsx", opts);
    Console.WriteLine("Loaded: " + wb.Worksheets.Count + " sheet(s)");
}
catch (PackageStructureException ex)
{
    Console.WriteLine("OPC structure invalid: " + ex.Message);
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Load error: " + ex.Message);
}

Trin 4: Forstå IPackageReader og IP ackagebog

IPackageReader definerer en Read() metode til aflæsning af en OPC-pakke; IPackageWriter definerer en Write() Metoden til at skrive en. Biblioteket giver standard ZIP-støttede implementeringer. Tilpassede implementationer kan leveres, når du indlæser fra eller gemmer i ikke-filsystemlagring (fx cloud blobs eller in-memory buffers).

// Signature reference
// public interface IPackageReader { void Read(/* ... */); }
// public interface IPackageWriter { void Write(/* ... */); }
//
// Standard usage: pass a Stream to the Workbook constructor
using Aspose.Cells_FOSS;
using System.IO;

byte[] fileBytes = File.ReadAllBytes("data.xlsx");
using var ms = new MemoryStream(fileBytes);
var wb = new Workbook(ms);
Console.WriteLine("Loaded from stream: " + wb.Worksheets.Count + " sheet(s)");

Trin 5: Søg efter ikke-understøttede dele

Ved indlæse af en XLSX-fil, PackageModel.UnsupportedParts Det er en liste over dele, som biblioteket ikke behandler. Disse bliver bevaret men ikke fortolket. Access PackageLoadContext under en tilpasset belastningstrøm for at inspicere modellen.

// PackageModel is populated internally during Workbook construction.
// Use LoadDiagnostics to detect load-time structural warnings without
// dropping to the PackageModel level directly.
using Aspose.Cells_FOSS;

var opts = new LoadOptions { TryRepairPackage = true, TryRepairXml = true };
var wb = new Workbook("file.xlsx", opts);
var diag = wb.LoadDiagnostics;
if (diag.HasRepairs)
    Console.WriteLine("Package had " + diag.Issues.Count() + " repair entries.");

Almindelige problemer og løsninger

PackageStructureException er kastet lige med TryRepairPackage = true. Vurder, om filen er en gyldig ZIP-adresse med unzip -t file.xlsx.Hvis det er gyldigt, kan den være krypteret adgangskodebeskyttede filer understøttes ikke.

Workbook - Det er ikke tilfældet. Kontrollering LoadDiagnostics.Issues for: DataLossRisk = true Disse angiver dele, der er faldet i løbet af reparationen.

Toldpenge IPackageReader er ikke blevet kaldt. Sørg for, at konstruktor overbelastning accepterer den brugerdefinerede læser anvendes. Ikke alle Workbook Konstruktor overbelastninger accepterer en tilpasset pakkeleser.

Ofte stillede spørgsmål

Hvornår skal jeg implementere IPackageReader eller IP ackagebog?

Kun når din lagringsbackend ikke er det lokale filsystem for eksempel, der indlæses direkte fra en cloud-lagringsstrøm uden at oprette en midlertidig fil.

Er ikke-understøttede dele i PackageModel bevaret på save?

Ikke-standarddele i UnsupportedParts For at sikre, at ikke-standarddele er retur til og fra, skal de gemte XLSX’er efterbehandles på ZIP-niveau.

Hvad er forskellen mellem PackageStructureException og WorkbookLoadExcept?

PackageStructureException er en fejl på OPC/ZIP-niveauet (manglende indholdstype, brudt forhold). WorkbookLoadException er et fejl på højere niveau ved analysering af XLSX XML-indholdet.

Se også:

 Dansk