العمل مع Excel في C# (.NET): نظرة عامة على المكتبات الشائعة
في التطوير الحديث على منصة .NET، غالبًا ما تنشأ الحاجة إلى التفاعل البرمجي مع ملفات Microsoft Excel. قد يكون ذلك لإنشاء التقارير، استيراد البيانات، تصدير الجداول، أو أتمتة سير العمل المستندي. في هذه المقالة، سنستعرض ثلاثًا من أشهر المكتبات للعمل مع Excel في C#: EPPlus وClosedXML وNPOI. لكل منها ميزاتها ومزاياها وقيودها الخاصة.
1. EPPlus — أداة قوية للعمل مع XLSX
EPPlus هي واحدة من أشهر المكتبات للعمل مع تنسيق Office Open XML (XLSX). توفر واجهة برمجة تطبيقات (API) شاملة لإنشاء وقراءة وتنسيق مستندات Excel. بدءًا من الإصدار 5، يتم توزيع EPPlus بموجب ترخيص Polyform Noncommercial (مجاني فقط للاستخدام غير التجاري)، بينما تتطلب المشاريع التجارية شراء ترخيص.
الإمكانيات الرئيسية:
- دعم كامل لتنسيق الخلايا (الخطوط، الألوان، الحدود، المحاذاة)
- العمل مع الرسوم البيانية، الجداول المحورية، والتنسيق الشرطي
- دعم الصيغ والحسابات
- العمل مع الصور والتعليقات
- أداء عالٍ عند التعامل مع الملفات الكبيرة
مثال لإنشاء ملف Excel باستخدام EPPlus:
using OfficeOpenXml;
class Program{ static void Main() { ExcelPackage.LicenseContext = LicenseContext.NonCommercial; // للمشاريع التجارية يلزم ترخيص using (var package = new ExcelPackage()) { var worksheet = package.Workbook.Worksheets.Add("تقرير"); // ملء العناوين worksheet.Cells["A1"].Value = "الاسم"; worksheet.Cells["B1"].Value = "العمر"; worksheet.Cells["C1"].Value = "المدينة"; // ملء البيانات worksheet.Cells["A2"].Value = "آنا"; worksheet.Cells["B2"].Value = 28; worksheet.Cells["C2"].Value = "موسكو"; // التنسيق worksheet.Cells["A1:C1"].Style.Font.Bold = true; worksheet.Cells["A1:C1"].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid; worksheet.Cells["A1:C1"].Style.Fill.BackgroundColor.SetColor(System.Drawing.Color.LightBlue); // حفظ الملف package.SaveAs(new FileInfo("report.xlsx")); } }}2. ClosedXML — واجهة برمجة تطبيقات بسيطة وبديهية
ClosedXML هي مكتبة مفتوحة المصدر (ترخيص MIT) توفر واجهة مريحة وموجزة للعمل مع ملفات XLSX. تم بناؤها على أساس DocumentFormat.OpenXml، لكنها تخفي تعقيد واجهة البرمجة منخفضة المستوى. ClosedXML مثالية للإنشاء السريع للتقارير والجداول البسيطة.
مزايا ClosedXML:
- بناء جملة بسيط وسهل القراءة
- مجانية تمامًا للاستخدام التجاري
- دعم جيد للأنماط والتنسيق
- دعم مدمج للعمل مع التواريخ والصيغ
مثال لقراءة البيانات من Excel باستخدام ClosedXML:
using ClosedXML.Excel;
class Program{ static void Main() { using (var workbook = new XLWorkbook("data.xlsx")) { var worksheet = workbook.Worksheet(1); // قراءة البيانات صفًا بصف foreach (var row in worksheet.RowsUsed()) { var name = row.Cell(1).GetValue<string>(); var age = row.Cell(2).GetValue<int>(); var city = row.Cell(3).GetValue<string>(); Console.WriteLine($"{name}, {ag