Jak pracovat s OOXML balení v .NET
Soubor XLSX je archiv ZIP Open Packaging Convention (OPC). Aspose.Cells FOSS pro .NET odhaluje základní strukturu balíčku prostřednictvím PackageModel, PackagePartDescriptor, IPackageReader,a) IPackageWriter. Tyto jsou rozhraní API na úrovni infrastruktury, které se používají především pro diagnostiku a vlastní implementace úložiště. dotnet add package Aspose.Cells_FOSS.
Krok za krokem
Krok 1: Nainstalujte balíček
dotnet add package Aspose.Cells_FOSSKrok 2: Importovat prostor pro jména
using Aspose.Cells_FOSS;Krok 3: Zpracování výjimky struktury balíčku
PackageStructureException je vyhozen, když balíček XLSX má neplatnou strukturu OPC (např. chybějí požadované vztahy). WorkbookLoadException při načtení souborů z nedůvěryhodných zdrojů.
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);
}Krok 4: Pochopit IPakageReader a IPackageWriter
IPackageReader definuje a Read() metoda pro čtení balení OPC; IPackageWriter definuje a Write() Knihovna poskytuje standardní implementace podporované ZIP. Obvyklé implementaci lze poskytnout při načítání z nebo uložení do ukládky mimo souborový systém (např. cloudové bloby nebo paměťová buffery).
// 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)");Krok 5: Zkontrolujte, zda nejsou podpořeny části.
Při načtení XLSX souboru, PackageModel.UnsupportedParts Zde jsou seznamy částí, které knihovna nezpracovává. Tyto části jsou uchovávány, ale nejsou interpretovány. Access PackageLoadContext během individuálního průtoku zatížení pro kontrolu modelu.
// 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.");Obvyklé problémy a řešení
PackageStructureException je hodena rovnoměrně s TryRepairPackage = true. Některé strukturální chyby OPC nemohou být automaticky opravovány (např. chybí úplně mapa typu obsahu). Ověřte, zda je soubor platný ZIP s použitím unzip -t file.xlsx. Pokud je platný, může být šifrovaný soubory chráněné heslem nejsou podporovány.
Workbook Obsah je chybějící. Ček. LoadDiagnostics.Issues pro: DataLossRisk = true Tyto údaje označují části, které při opravě vypadly.
Obvyklé IPackageReader Není to volání. Ujistěte se, že konstruktor přetížení, které přijímá vlastní čtenář je použit. Ne všechny Workbook Konstruktorové přetížení přijímá vlastní čtenář balíčků.
Časté otázky
Kdy mám implementovat IPackageReader nebo IPackageWriter?
Pouze v případě, že váš backend není místní souborový systém například načítání přímo z proudu cloudového úložiště bez vytvoření dočasného souboru.
Jsou nepodporované části v modelu balíčku uchovávány na ukládání?
Neštandardní díly v UnsupportedParts Pro zajištění přesnosti nepřiměřených částí, zpracujte uložené XLSX na úrovni ZIP.
Jaký je rozdíl mezi PackageStructureException a WorkbookLoadExcept?
PackageStructureException je selhání úrovně OPC/ZIP (chybí typ obsahu, vztah se narušil). WorkbookLoadException je selhání vyšší úrovně při analýze obsahu XLSX XML.