Kaip .NET aplinkoje įkelti skaičiuoklės lapą

Kaip .NET aplinkoje įkelti skaičiuoklės lapą

Aspose.Cells FOSS for .NET leidžia atverti esamas XLSX skaičiuokles vienu konstruktoriaus iškvietimu ir suteikia klaidų tolerantišką įkėlimo kelią failams, turintiems nedidelį struktūrinį sugadinimą. Įdiekite biblioteką iš NuGet naudodami dotnet add package Aspose.Cells_FOSS.

Žingsnis po žingsnio vadovas

Žingsnis 1: Įdiekite paketą

dotnet add package Aspose.Cells_FOSS

Patikrinkite, ar paketas yra:

dotnet list package | grep Aspose.Cells_FOSS

Žingsnis 2: importuoti vardų sritį

Pridėkite šią direktyvą į savo C# failo viršų:

using Aspose.Cells_FOSS;

3 žingsnis: Įkelti XLSX failą

Perduokite failo kelią Workbook konstruktoriui. Biblioteka perskaito XLSX failą ir užpildo atmintyje esantį darbaknygės objektą.

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

Žingsnis 4: Įkelti su gedimų tolerantiškomis taisymo parinktimis

Failams, kuriuose gali būti ZIP arba XML sugadinimas, pateikite LoadOptions objektą su TryRepairPackage ir TryRepairXml, nustatytais į true. Apsupkite kvietimą try/catch dėl WorkbookLoadException, jei failas yra negrąžinamas.

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

Žingsnis 5: Patikrinkite įkrovimo diagnostiką

Įkėlus, patikrinkite Workbook.LoadDiagnostics, ar biblioteka atliko kokius nors pataisymus. HasRepairs yra true, jei buvo atliktas bet koks pataisymas; HasDataLossRisk yra true, jei duomenys galėjo būti išmesti. Iteruokite Issues, kad pasiektumėte atskirus DiagnosticEntry įrašus.

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

Žingsnis 6: Gauti darbalapio duomenis

Įkėlę, pasiekite darbalapius pagal indeksą arba pavadinimą ir skaitykite langelių reikšmes naudodami Cell.StringValue arba Cell.Value.

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

Įprastos problemos ir sprendimai

WorkbookLoadException išmetamas net su įjungtomis taisymo parinktimis.
Tai reiškia, kad failo ZIP struktūra yra per daug sugadinta, kad taisymo algoritmai galėtų ją atkurti. Patikrinkite, ar failas yra galiojantis ZIP archyvas (pvz., bandykite unzip -t file.xlsx). Jei failas yra visiškai sugadintas, jo negalima atverti jokios bibliotekos.

Įkelta darbalapio knyga turi mažiau lapų nei tikėtasi.
Gali būti, kad taisymo operacija pašalino darbalapius, kurie nuorodavo į trūkstamas dalis. Patikrinkite LoadDiagnostics.Issues dėl įrašų su DataLossRisk = true ir informuokite naudotoją.

Ląstelių reikšmės yra tuščios po įkėlimo. Įsitikinkite, kad pasiekiate teisingą darbalapio indeksą arba pavadinimą. Naudokite wb.Worksheets.Count, kad patvirtintumėte laukiamą lapų skaičių. Taip pat patikrinkite, ar XLSX failas nėra apsaugotas slaptažodžiu (slaptažodžiu apsaugoti failai šiuo metu nepalaikomi).

Workbook konstruktorius užstriga dideliame faile. Konstruktorius yra sinchroninis ir įkelia visą failą į atmintį. Labai dideliems failams įkrovimą vykdykite fone esančioje gijoje, kad UI išliktų reaguojanti.

DiagnosticEntry.Severity rodo Error, bet HasRepairs yra false. HasRepairs atspindi, ar taisymas buvo sėkmingai pritaikytas, o ne ar buvo aptiktos klaidos. Error‑sunkumo įrašas su RepairApplied = false reiškia, kad problema buvo aptikta, bet negalėjo būti ištaisyta — traktuokite tai kaip galimą duomenų vientisumo įspėjimą.

Dažnai užduodami klausimai

Ar galiu įkelti XLSX failą iš srauto, o ne iš failo kelio?

Taip. Workbook konstruktorius turi perkrovimus, kurie priima Stream objektą. Jei reikia gedimų tolerantiško įkėlimo, perduokite savo srautą kartu su LoadOptions egzemplioriumi.

Ar biblioteka palaiko slaptažodžiu apsaugotų XLSX failų įkėlimą?

Slaptažodžiu apsaugoti failai nėra dabartinėje API srityje. Bandymas įkelti tokį sukels WorkbookLoadException.

Kaip patikrinti, kuris lapas yra aktyvus įkeltoje darbalapio knygoje?

Perskaitykite Workbook.Worksheets.ActiveSheetName, kad gautumėte paskutinio aktyvaus lapo pavadinimą, kai failas buvo išsaugotas.

Ar galiu vienu metu įkelti kelis XLSX failus?

Taip. Kiekviena Workbook egzempliorius yra nepriklausomas. Galite sukurti kelis Workbook objektus atskiruose gijų be bendros būsenos.

Kas nutinka, jei formulės langelis įkeliamas ir kešuotas rezultatas nėra?

Cell.StringValue grąžina tuščią eilutę. Cell.Formula vis dar grąžina formulės eilutę. Talpinama tik tada, kai Excel (arba suderinama programa) atidaro ir išsaugo failą.

Žr. taip pat

 Lietuvių