Hogyan töltsünk be egy táblázatot .NET‑ben

Hogyan töltsünk be egy táblázatot .NET‑ben

Aspose.Cells FOSS for .NET lehetővé teszi, hogy egyetlen konstruktorhívással nyisson meg meglévő XLSX táblázatokat, és hibamentes betöltési útvonalat biztosít a kisebb szerkezeti sérülésekkel rendelkező fájlok számára. Telepítse a könyvtárat a NuGet‑ről a dotnet add package Aspose.Cells_FOSS segítségével.

Lépésről‑lépésre útmutató

1. lépés: A csomag telepítése

dotnet add package Aspose.Cells_FOSS

Ellenőrizze, hogy a csomag jelen van:

dotnet list package | grep Aspose.Cells_FOSS

2. lépés: Névterület importálása

Adja hozzá ezt az irányelvet a C# fájl tetejére:

using Aspose.Cells_FOSS;

3. lépés: XLSX fájl betöltése

Adja át a fájl útvonalát a Workbook konstruktorának. A könyvtár beolvassa az XLSX fájlt, és feltölti a memóriában lévő munkafüzet objektumot.

using Aspose.Cells_FOSS;

var wb = new Workbook("data.xlsx");
Console.WriteLine("Loaded " + wb.Worksheets.Count + " sheet(s)");
Console.WriteLine("First sheet: " + wb.Worksheets[0].Name);
Console.WriteLine("A1 value: " + wb.Worksheets[0].Cells["A1"].StringValue);

4. lépés: Betöltés hibamentes javítási beállításokkal

A ZIP vagy XML sérülést tartalmazó fájlok esetén adjon meg egy LoadOptions objektumot, amelyben a TryRepairPackage és TryRepairXml értéke true. Csomagolja be a hívást egy try/catch-be WorkbookLoadException-re, ha a fájl helyrehozhatatlan.

using Aspose.Cells_FOSS;

var opts = new LoadOptions
{
    TryRepairPackage = true,
    TryRepairXml = true,
};

try
{
    var wb = new Workbook("possibly-corrupt.xlsx", opts);
    Console.WriteLine("Loaded successfully");
}
catch (WorkbookLoadException ex)
{
    Console.WriteLine("Unrecoverable file: " + ex.Message);
}

5. lépés: Betöltési diagnosztika ellenőrzése

Betöltés után ellenőrizze a Workbook.LoadDiagnostics-t, hogy a könyvtár alkalmazott‑e javításokat. A HasRepairs true, ha bármilyen javítás történt; a HasDataLossRisk true, ha az adat esetleg el lett dobva. Iteráljon a Issues‑n, hogy hozzáférjen az egyes DiagnosticEntry rekordokhoz.

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("Repairs were applied. Data loss risk: " + diag.HasDataLossRisk);
    foreach (var entry in diag.Issues)
        Console.WriteLine($"  [{entry.Severity}] {entry.Code}: {entry.Message}");
}
else
{
    Console.WriteLine("File loaded cleanly — no repairs.");
}

6. lépés: Munkalap adatainak elérése

Betöltés után index vagy név alapján érje el a munkalapokat, és olvassa ki a cellaértékeket a Cell.StringValue vagy Cell.Value használatával.

using Aspose.Cells_FOSS;

var wb = new Workbook("data.xlsx");

// By index
var sheet = wb.Worksheets[0];
Console.WriteLine("Sheet: " + sheet.Name);
Console.WriteLine("A1: " + sheet.Cells["A1"].StringValue);

// By name
var named = wb.Worksheets["Report"];
if (named != null)
    Console.WriteLine("Report!B2: " + named.Cells["B2"].StringValue);

Gyakori problémák és megoldások

WorkbookLoadException akkor is keletkezik, ha a javítási beállítások engedélyezve vannak.
Ez azt jelenti, hogy a fájl ZIP struktúrája túl sérült a javító algoritmusok számára a helyreállításhoz. Ellenőrizze, hogy a fájl érvényes ZIP archívum‑e (például próbálja ki unzip -t file.xlsx). Ha a fájl teljesen sérült, egyetlen könyvtár sem tudja megnyitni.

A betöltött munkafüzet kevesebb lapot tartalmaz, mint várt. Egy javítási művelet eltávolíthatta azokat a munkalapokat, amelyek hiányzó részekre hivatkoztak. Ellenőrizze a LoadDiagnostics.Issues bejegyzéseket a DataLossRisk = true-vel, és értesítse a felhasználót.

A cellák értéke üres a betöltés után.
Győződjön meg arról, hogy a megfelelő munkalap indexet vagy nevet használja. Használja a wb.Worksheets.Count‑t a várt munkalapok számának megerősítéséhez. Ellenőrizze továbbá, hogy az XLSX fájl nincs jelszóval védve (a jelszóval védett fájlok jelenleg nem támogatottak).

Workbook a konstruktor nagy fájlon akadozik.
A konstruktor szinkron, és az egész fájlt memóriába tölti. Nagyon nagy fájlok esetén a betöltést háttérszálon kell futtatni, hogy a felhasználói felület reagálók maradjon.

DiagnosticEntry.Severity azt mutatja, hogy Error, de HasRepairs false.
HasRepairs azt tükrözi, hogy egy javítás sikeresen alkalmazva lett‑e, nem pedig azt, hogy hibákat észleltek‑e. Egy Error‑súlyosságú bejegyzés RepairApplied = false‑val azt jelenti, hogy a probléma észlelve lett, de nem javítható — kezelje ezt lehetséges adatintegritási figyelmeztetésként.

Gyakran Ismételt Kérdések

Betölthetek egy XLSX fájlt egy Streamből a fájl útvonala helyett?

Igen. A Workbook konstruktor rendelkezik túlterhelésekkel, amelyek elfogadnak egy Stream objektumot. Adja át az adatfolyamot egy LoadOptions példány mellett, ha hibatűrő betöltésre van szükség.

Támogatja a könyvtár a jelszóval védett XLSX fájlok betöltését?

Jelszóval védett fájlok nincsenek a jelenlegi API felületen. Egy ilyen betöltésének megkísérlése WorkbookLoadException hibát eredményez.

Hogyan ellenőrizhetem, hogy melyik munkalap aktív a betöltött munkafüzetben?

Olvasd el Workbook.Worksheets.ActiveSheetName-t, hogy megkapd a munkalap nevét, amely a fájl mentésekor volt utoljára aktív.

Betölthetek egyszerre több XLSX fájlt?

Igen. Minden Workbook példány független. Több Workbook objektumot is példányosíthat külön szálakon megosztott állapot nélkül.

Mi történik, ha egy képletcellát töltünk be, és a gyorsítótárazott eredmény hiányzik?

Cell.StringValue üres karakterláncot ad vissza. Cell.Formula továbbra is a képlet karakterláncát adja vissza. A gyorsítótárazott érték csak akkor töltődik fel, amikor az Excel (vagy egy kompatibilis alkalmazás) megnyitja és elmenti a fájlt.

Lásd még

 Magyar