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_FOSSPatikrinkite, 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ą.