Kako raditi s OOXML pakiranjem u .NET-u?
XLSX datoteka je ZIP arhiva Otvorene pakovanja (OPC). Aspose.Cells FOSS za .NET izložava osnovnu strukturu paketa putem: PackageModel, PackagePartDescriptor, IPackageReader, i IPackageWriter.To su API-i na razini infrastrukture koji se prvenstveno koriste za dijagnostiku i prilagodjene implementacije pohranjivanja. dotnet add package Aspose.Cells_FOSS.
Korak po korak vodič
Korak 1: Instaliraj paket
dotnet add package Aspose.Cells_FOSSKorak 2: Uvezite prostor za ime
using Aspose.Cells_FOSS;Korak 3: Upravljanje paketaStructureException
PackageStructureException je bačen kada XLSX paket ima nevaljanu OPC strukturu (npr. nedostaju potrebne veze). Primi ga uz stranu WorkbookLoadException prilikom učitavanja datoteka iz nezavisnih izvora.
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);
}Korak 4: Razumijevanje IPackageReader i IPackeWriter
IPackageReader definira se: Read() metod za čitanje paketa OPC-a; IPackageWriter definira se: Write() Metod za pisanje jednog. Biblioteka pruža podrazumijene implementacije koje su podržane ZIP-om. Uslove se mogu isporučiti prilikom učitavanja ili pohranjivanja na skladište koji nisu datoteke (npr. Cloud blobs ili buffers u memoriji).
// 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)");Korak 5: Provjerite neisporučene dijelove
Prilikom učitavanja XLSX datoteke, PackageModel.UnsupportedParts Access je dio koji se ne obrađuje u knjižnici. PackageLoadContext U slučaju da je to moguće, mora se provjeriti.
// 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.");Česta pitanja i rješenja
PackageStructureException Baci se čak i sa: TryRepairPackage = true. U ovom slučaju, ako je datoteka u skladu s člankom 6. stavkom 1. točkom (a) ili (b), treba provjeriti da li se ta datotekama može koristiti za prikupljanje podataka. unzip -t file.xlsx.Ako je valjan, može biti šifriran datoteke zaštićene lozinkom nisu podržane.
Workbook Ali nedostaje neki sadržaj. Čekaj. LoadDiagnostics.Issues za: DataLossRisk = true Upis: To su dijelovi koji su ispali tijekom popravke.
Uređenje: IPackageReader Ne zove se. Završite konstruktor preopterećenje koji prihvaća prilagođen čitatelj se koristi. Ne sve Workbook Konstruktor preopterećenja prihvaćaju prilagođen čitatelj paketa.
Česta pitanja
Kada treba implementirati IPackageReader ili IPackeWriter?
Samo kada vaš zadnji dio skladištenja nije lokalni sustav datoteka, na primjer, učitavanje izravno s toka za pohranu u oblaku bez stvaranja privremene datotekare.
Da li su ne podržani dijelovi u Paketomodelu sačuvani na čuvanju?
Neštandardni dijelovi u UnsupportedParts Za povratnu vjerodostojnost ne-standardnih dijelova, nakon obrade sačuvani XLSX na ZIP nivou.
Što je razlika između PackageStructureException i WorkbookLoadExcept?
PackageStructureException je propust na razini OPC/ZIP (manju vrstu sadržaja, prekinuta veza). WorkbookLoadException je neuspjeh na višem nivou pri analizi sadržaja XLSX XML-a.