Hogyan dolgozzunk az OOXML csomagolással a .NET-ben?
Az XLSX fájl egy nyílt csomagolási konvenció (OPC) ZIP archívum. Aspose.Cells A .NET FOSS a mögöttes csomagtartó struktúrát mutatja be az OPC-n keresztül. PackageModel, PackagePartDescriptor, IPackageReader,és a következők: IPackageWriter.Ezek az infrastruktúra szintű API-k, amelyek elsősorban a diagnosztikai és egyedi tárolási implementációkra használhatók. dotnet add package Aspose.Cells_FOSS.
Lépésről lépésre szóló útmutató
1. lépés: telepítse a csomagot
dotnet add package Aspose.Cells_FOSS2. lépés: Behozni a névterületet
using Aspose.Cells_FOSS;3. lépés: PackageStructureException kezelése
PackageStructureException A programot akkor dobják ki, ha az XLSX csomagnak nem érvényes OPC-szerkezete van (pl. hiányzik a szükséges kapcsolat). WorkbookLoadException a nem megbízható forrásokból származó fájlok betöltésekor.
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);
}4. lépés: Értse meg az IPackageReader és az iPacketWriter funkciókat
IPackageReader A. meghatározása: Read() az OPC csomagolási formanyomtatványok elolvasásának módszere; IPackageWriter A. meghatározása: Write() A könyvtár alapértelmezett ZIP-támogatott implementációkat biztosít. Kastómi implementációt lehet szolgáltatni a fájlrendszeren kívüli tárolóból történő betöltéskor vagy mentésekor (pl. felhő blobok vagy memóriában lévő bufferek).
// 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)");5. lépés: Ellenőrizze a nem támogatott alkatrészeket
XLSX fájl betöltésekor, PackageModel.UnsupportedParts Az elemek megőrződnek, de nem értelmezhetők. Access PackageLoadContext egy testre szabott terhelési áramlás során a modell ellenőrzésére.
// 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.");Általános problémák és megoldások
PackageStructureException a dobás egyenlő, ha: TryRepairPackage = true. Néhány OPC-szerkezeti hiba nem képes automatikusan javítani (pl. teljes mértékben hiányzik a tartalomtípusú térkép). Ellenőrizze, hogy az adat egy érvényes ZIP-számmal van. unzip -t file.xlsx.Ha érvényes, akkor kódolható. A jelszóval védett fájlok nem támogathatók.
Workbook A csomagok, de hiányzik egy kis tartalom. A csekk. LoadDiagnostics.Issues a következők: DataLossRisk = true Ezek a javítás során leesett alkatrészek.
A vámok IPackageReader Nem hívják. Biztosítsuk, hogy a konstruktor túlsúly elfogadja a testreszkeret használ. Nem minden Workbook A konstruktor túlsúlyok egyéni csomagolási olvasót fogadnak el.
Gyakran feltett kérdések
Mikor kell beépíteni az IPackageReader-t vagy az iPaccageWritert?
Csak akkor, ha a tároló backend nem a helyi fájlrendszer például közvetlenül egy felhő-tárolásból történő betöltés ideiglenes fájlok létrehozása nélkül.
A PackageModel nem támogatott részei mentve vannak?
Nem szabványos alkatrészek, a következőkben: UnsupportedParts A nem szabványos alkatrészek körbe-körbe hűségének biztosítása érdekében a mentett XLSX-t ZIP szinten kell feldolgozni.
Mi a különbség az PackageStructureException és a WorkbookLoadExcept között?
PackageStructureException az OPC/ZIP szint hibája (a tartalomtípus hiányzik, a kapcsolat megszakad). WorkbookLoadException a XLSX XML tartalmának elemzésében fennálló nagyobb szintű hiba.