كيفية تحميل جدول بيانات في .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 المحمية بكلمة مرور؟

الملفات المحمية بكلمة مرور ليست ضمن واجهة برمجة التطبيقات الحالية. محاولة تحميل واحدة ستؤدي إلى WorkbookLoadException.

كيف أتحقق من أي ورقة هي النشطة في دفتر العمل المحمَّل؟

اقرأ Workbook.Worksheets.ActiveSheetName للحصول على اسم الورقة التي كانت نشطة آخر مرة عند حفظ الملف.

هل يمكنني تحميل ملفات XLSX متعددة في وقت واحد؟

نعم. كل مثيل Workbook مستقل. يمكنك إنشاء عدة كائنات Workbook على خيوط منفصلة دون حالة مشتركة.

ماذا يحدث إذا تم تحميل خلية صيغة وكانت النتيجة المخزنة غير موجودة؟

Cell.StringValue تُعيد سلسلة فارغة. Cell.Formula لا تزال تُعيد سلسلة الصيغة. يتم تعبئة القيمة المخزنة مؤقتًا فقط عندما يفتح Excel (أو تطبيق متوافق) الملف ويحفظه.

انظر أيضًا

 العربية