Kā strādāt ar OOXML pakotņu apstrādi .NET vidē

Kā strādāt ar OOXML pakotņu apstrādi .NET vidē

XLSX fails ir Open Packaging Convention (OPC) ZIP arhīvs. Aspose.Cells FOSS for .NET atklāj pamatpaketes struktūru caur PackageModel, PackagePartDescriptor, IPackageReader un IPackageWriter. Šie ir infrastruktūras līmeņa API, galvenokārt noderīgi diagnostikai un pielāgotām glabāšanas implementācijām. Instalējiet, izmantojot dotnet add package Aspose.Cells_FOSS.

Rokasgrāmata soli pa solim

1. solis: instalēt pakotni

dotnet add package Aspose.Cells_FOSS

2. solis: Importēt nosaukumtelpu

using Aspose.Cells_FOSS;

Solis 3: Apstrādāt PackageStructureException

PackageStructureException tiek izsviests, ja XLSX pakotnei ir nederīga OPC struktūra (piemēram, trūkst nepieciešamās attiecības). Noķeriet to kopā ar WorkbookLoadException, ielādējot failus no neuzticamiem avotiem.

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);
}

Solis 4: Izprast IPackageReader un IPackageWriter

IPackageReader definē Read() metodi OPC paketes lasīšanai; IPackageWriter definē Write() metodi tās rakstīšanai. Bibliotēka nodrošina noklusējuma ZIP‑atbalstītas implementācijas. Pielāgotas implementācijas var tikt nodrošinātas, ielādējot vai saglabājot uz nefailu sistēmas glabātuves (piemēram, mākoņa blobi vai atmiņas buferi).

// 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)");

Solis 5: Pārbaudīt neatbalstītās daļas

Ielādējot XLSX failu, PackageModel.UnsupportedParts uzskaita daļas, kuras bibliotēka neapstrādā. Šīs daļas tiek saglabātas, bet neinterpretētas. Piekļūstiet PackageLoadContext pielāgotas ielādes plūsmas laikā, lai pārbaudītu modeli.

// 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.");

Biežas problēmas un risinājumi

PackageStructureException tiek izsviests pat ar TryRepairPackage = true.
Dažas OPC struktūras kļūdas pārsniedz automātisko labošanas iespējas (piemēram, pilnīgi trūkstoša content-type karte). Pārbaudiet, vai fails ir derīgs ZIP, izmantojot unzip -t file.xlsx. Ja tas ir derīgs, tas var būt šifrēts — parole aizsargāti faili netiek atbalstīti.

Workbook ielādējas, bet daļa satura trūkst. Pārbaudiet LoadDiagnostics.Issues uz DataLossRisk = true ierakstiem. Tie norāda uz daļām, kas tika izlaistas remontā.

Pielāgotais IPackageReader netiek izsaukts. Pārliecinieties, ka tiek izmantots konstruktora pārslogojums, kas pieņem pielāgoto lasītāju. Ne visi Workbook konstruktora pārslogojumi pieņem pielāgoto pakotnes lasītāju.

Biežāk uzdotie jautājumi

Kad man vajadzētu īstenot IPackageReader vai IPackageWriter?

Tikai tad, ja jūsu glabāšanas aizmugure nav lokālais failu sistēma — piemēram, ielādējot tieši no mākoņa glabāšanas straumes, neveidojot pagaidu failu.

Vai neatbalstītās daļas PackageModel tiek saglabātas saglabāšanas laikā?

Nestandarta daļas UnsupportedParts nav garantētas, ka tiks atgrieztas. Lai saglabātu apgriešanas precizitāti nestandarta daļām, pēc tam apstrādājiet saglabāto XLSX ZIP līmenī.

Kāda ir atšķirība starp PackageStructureException un WorkbookLoadException?

PackageStructureException ir OPC/ZIP līmeņa kļūda (trūkst satura veids, bojāta saistība). WorkbookLoadException ir augstākā līmeņa kļūda, parsējot XLSX XML saturu.

Skatīt arī

 Latviešu