العمل مع Excel في C# (.NET): مكتبات EPPlus و ClosedXML

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

العمل مع Excel في C# (.NET): دليل مفصل لـ EPPlus و ClosedXML



في التطوير الحديث على منصة .NET، غالبًا ما تنشأ الحاجة إلى إنشاء جداول بيانات Excel وقراءتها وتحريرها برمجيًا. قد يكون ذلك لتوليد التقارير، أو استيراد البيانات من قواعد البيانات، أو تصدير الإحصائيات، أو أتمتة العمليات التجارية. في هذه المقالة، سنستعرض اثنتين من أشهر وأقوى المكتبات للعمل مع Excel في C#: EPPlus و ClosedXML. تعمل كلتا المكتبتين مع تنسيق Open XML (XLSX) ولا تتطلبان تثبيت Microsoft Office.



لماذا يجب استخدام المكتبات لـ Excel؟

إن الإنشاء اليدوي لملفات XML لتنسيق XLSX أمر شاق للغاية وعرضة للأخطاء. توفر المكتبات، مثل EPPlus و ClosedXML، واجهة برمجة تطبيقات عالية المستوى تخفي كل تعقيدات العمل مع Open XML. تتيح لك:

  • إنشاء ملفات Excel من الصفر مع تحكم كامل في التنسيق.
  • قراءة البيانات من الجداول الموجودة مع دعم لأنواع الخلايا المختلفة.
  • تحرير الخلايا والصفوف والأعمدة والأوراق.
  • تطبيق الأنماط والخطوط والألوان والحدود والتنسيق الشرطي.
  • العمل مع الصيغ والجداول المحورية والرسوم البيانية.
  • تصدير البيانات إلى PDF (متاح في الإصدار المدفوع من EPPlus).


مكتبة EPPlus

EPPlus هي واحدة من أقدم وأكثر المكتبات وظيفية للعمل مع Excel في .NET. تدعم جميع الإمكانيات الأساسية لتنسيق XLSX، بما في ذلك الرسوم البيانية والجداول المحورية والتنسيق الشرطي ووحدات ماكرو VBA. بدءًا من الإصدار 5، انتقلت EPPlus إلى نموذج ترخيص LGPL مع قيود إضافية للاستخدام التجاري (مجاني للمشاريع التي يقل دخلها عن مليون دولار سنويًا).



تثبيت EPPlus

يمكن تثبيت المكتبة عبر NuGet Package Manager:

Install-Package EPPlus

أو عبر .NET CLI:

dotnet add package EPPlus


مثال: إنشاء ملف Excel بسيط باستخدام EPPlus

يوضح الكود التالي إنشاء ملف Excel مع عناوين وبيانات، بالإضافة إلى تطبيق تنسيق أساسي:

using OfficeOpenXml;using OfficeOpenXml.Style;using System.Drawing;

public void CreateExcelWithEPPlus(){ // تعيين سياق الترخيص (إلزامي لـ EPPlus 5+) ExcelPackage.LicenseContext = LicenseContext.NonCommercial;

using (var package = new ExcelPackage()) { // إضافة ورقة جديدة var worksheet = package.Workbook.Worksheets.Add("الموظفون");

// العناوين worksheet.Cells[1, 1].Value = "الاسم"; worksheet.Cells[1, 2].Value = "المنصب"; worksheet.Cells[1, 3].Value = "الراتب";

// تنسيق العناوين using (var range = worksheet.Cells[1, 1, 1, 3]) { range.Style.Font.Bold = true; range.Style.Fill.PatternType = ExcelFillStyle.Solid; range.Style.Fill.BackgroundColor.SetColor(Color.LightBlue); range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; }

// البيانات worksheet.Cells[2, 1].Value = "إيفان إيفانوف"; worksheet.Cells[2, 2].Value = "مطور"; worksheet.Cells[2, 3].Value = 150000;

worksheet.Cells[3, 1].Value = "ماريا بيتروفا"; worksheet.Cells[3, 2].Value = "محلل"; worksheet.Cells[3, 3].Value = 120000;

// تنسيق الأرقام worksheet.Cells[2, 3, 3, 3].Style.Numberformat.Format = "#,##0";

// ضبط العرض التلقائي للأعمدة worksheet.Cells[1, 1, 3, 3].AutoFitColumns();

// حفظ الملف var fileInfo = new FileInfo("employees.xlsx"); package.SaveAs(fileInfo); }}


مكتبة ClosedXML

ClosedXML هي مكتبة خفيفة الوزن ومجانية تمامًا (ترخيص

توصيات