Hogyan dolgozzunk az OOXML csomagolással a .NET-ben?

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_FOSS

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

Lásd még:

 Magyar