نحوه بارگذاری یک صفحهگسترده در .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مرحله ۲: وارد کردن فضای نام
این دستور را در بالای فایل 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);مرحله ۴: بارگذاری با گزینههای تعمیر مقاوم به خطا
برای فایلهایی که ممکن است خرابسازی 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 است اگر ممکن است دادهها حذف شده باشند. برای دسترسی به رکوردهای DiagnosticEntry فردی، Issues را تکرار کنید.
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.");
}مرحله ۶: دسترسی به دادههای برگه کاری
پس از بارگذاری، با استفاده از اندیس یا نام به شیتها دسترسی پیدا کنید و مقادیر سلولها را با استفاده از 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 overloadهایی دارد که یک شیء Stream را میپذیرند. اگر بارگذاری مقاوم به خطا لازم است، جریان خود را همراه با یک نمونه LoadOptions پاس کنید.
آیا کتابخانه از بارگذاری فایلهای XLSX محافظتشده با رمز عبور پشتیبانی میکند؟
فایلهای محافظتشده با رمز عبور در سطح فعلی API موجود نیستند. تلاش برای بارگذاری یکی منجر به WorkbookLoadException میشود.
چگونه میتوانم بررسی کنم که کدام شیت در کتابکار بارگذاریشده فعال است؟
Workbook.Worksheets.ActiveSheetName را بخوانید تا نام شیتی که آخرین بار هنگام ذخیرهسازی فایل فعال بوده است، به دست آورید.
آیا میتوانم چندین فایل XLSX را بهصورت همزمان بارگذاری کنم؟
بله. هر نمونه Workbook مستقل است. میتوانید چندین شیء Workbook را در رشتههای جداگانه بدون وضعیت مشترک ایجاد کنید.
اگر یک سلول فرمول بارگذاری شود و نتیجهٔ ذخیرهشده موجود نباشد، چه اتفاقی میافتد؟
Cell.StringValue یک رشته خالی برمیگرداند. Cell.Formula هنوز رشته فرمول را برمیگرداند. مقدار کششده فقط زمانی پر میشود که اکسل (یا برنامهای سازگار) فایل را باز کرده و ذخیره کند.