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_FOSS

Korak 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.

Također pogledajte:

 Hrvatski