Как да заредите електронна таблица в .NET

Как да заредите електронна таблица в .NET

Aspose.Cells FOSS for .NET ви позволява да отворите съществуващи XLSX електронни таблици с едно извикване на конструктора и предоставя устойчив път за зареждане за файлове с лека структурна корупция. Инсталирайте библиотеката от NuGet с dotnet add package Aspose.Cells_FOSS.

Ръководство стъпка по стъпка

Стъпка 1: Инсталирайте пакета

dotnet add package Aspose.Cells_FOSS

Проверете дали пакетът е наличен:

dotnet list package | grep Aspose.Cells_FOSS

Стъпка 2: Импортиране на пространството от имена

Добавете тази директива в началото на вашия C# файл:

using Aspose.Cells_FOSS;

Стъпка 3: Заредете XLSX файл

Предайте пътя към файла на конструктора Workbook. Библиотеката чете XLSX файла и попълва обекта на работната книга в паметта.

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: Зареждане с опции за поправка с устойчивост към грешки

За файлове, които може да имат повреда в ZIP или XML, предоставете обект LoadOptions с TryRepairPackage и TryRepairXml, зададени на true. Обвийте извикването в try/catch за WorkbookLoadException в случай, че файлът е невъзстановим.

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: Проверка на диагностиката за натоварване

След зареждане, проверете Workbook.LoadDiagnostics, за да видите дали библиотеката е приложила някакви поправки. HasRepairs е true, ако е приложена поправка; HasDataLossRisk е true, ако данните може да са били отхвърлени. Итерирайте Issues, за да достъпите отделни DiagnosticEntry записи.

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: Достъп до данните от работния лист

След зареждане, достъпвайте листовете по индекс или име и прочетете стойностите на клетките, използвайки Cell.StringValue или 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);

Общи проблеми и решения

WorkbookLoadException се хвърля дори когато опциите за поправка са активирани.
Това означава, че ZIP структурата на файла е твърде повредена, за да могат алгоритмите за поправка да я възстановят. Проверете дали файлът е валиден ZIP архив (например опитайте unzip -t file.xlsx). Ако файлът е напълно повреден, не може да бъде отворен от никоя библиотека.

Заредената работна книга има по‑малко листове от очакваното.
Операция по поправка може да е премахнала работни листове, които са се позовавали на липсващи части. Проверете LoadDiagnostics.Issues за записи с DataLossRisk = true и уведомете потребителя.

Стойностите в клетките са празни след зареждане.
Уверете се, че достъпвате правилния индекс или име на лист. Използвайте wb.Worksheets.Count, за да потвърдите очаквания брой листове. Също така проверете дали XLSX файлът не е защитен с парола (файловете, защитени с парола, в момента не се поддържат).

Workbook конструкторът се задържа при голям файл.
Конструкторът е синхронен и зарежда целия файл в паметта. За много големи файлове, изпълнете зареждането във фонов поток, за да запазите реактивността на потребителския интерфейс.

DiagnosticEntry.Severity показва Error, но HasRepairs е false. HasRepairs отразява дали поправката е успешно приложена, а не дали са открити грешки. Запис с тежест Error‑тежест и с RepairApplied = false означава, че проблемът е открит, но не може да бъде поправен — третирате го като възможно предупреждение за целостта на данните.

Често задавани въпроси

Мога ли да заредя XLSX файл от Stream вместо от път към файл?

Да. Конструкторът Workbook има претоварвания, които приемат обект Stream. Предайте вашия поток заедно с инстанция LoadOptions, ако е необходимо зареждане с устойчивост към грешки.

Поддържа ли библиотеката зареждане на XLSX файлове, защитени с парола?

Файловете, защитени с парола, не са част от текущия API. Опитът да се зареди такъв ще доведе до WorkbookLoadException.

Как да проверя кой лист е активен в заредената работна книга?

Прочетете Workbook.Worksheets.ActiveSheetName, за да получите името на листа, който е бил последно активен, когато файлът е бил запазен.

Мога ли да зареждам няколко XLSX файла едновременно?

Да. Всеки Workbook екземпляр е независим. Можете да създавате множество Workbook обекти в отделни нишки без споделено състояние.

Какво се случва, ако се зареди клетка с формула и кешираният резултат липсва?

Cell.StringValue връща празен низ. Cell.Formula все още връща низ на формулата. Кешираната стойност се попълва само когато Excel (или съвместимо приложение) отвори и запише файла.

Вижте също

 Български