PhpSpreadsheet PHP: دليل شامل مع أمثلة عملية
1. ما هي مكتبة PhpSpreadsheet ولماذا تحتاجها؟
PhpSpreadsheet هي مكتبة قوية للغة PHP، مصممة لقراءة وكتابة وإدارة جداول البيانات الإلكترونية بصيغ Excel (XLSX، XLS)، LibreOffice Calc (ODS)، CSV، HTML وغيرها. تعتبر هذه المكتبة الوريث الشرعي للمكتبة الشهيرة PHPExcel التي توقف تطويرها عام 2017. تمت إعادة كتابة PhpSpreadsheet بالكامل لتتوافق مع المعايير الحديثة للغة PHP (PSR-4، PSR-7، PSR-12)، وتدعم العمل مع كميات كبيرة من البيانات، والصيغ المعقدة، والأنماط، والرسوم البيانية، والتنسيق الشرطي.
لماذا تحتاجها؟ في تطوير الويب، غالباً ما تحتاج إلى تصدير البيانات من قاعدة البيانات إلى تقارير Excel، أو استيراد الجداول التي يرفعها المستخدمون، أو إنشاء الفواتير، وقوائم الأسعار، والمستندات المالية. تتيح لك PhpSpreadsheet القيام بذلك برمجياً دون الحاجة إلى تثبيت حزم Office على الخادم. تدعم المكتبة أكثر من 30 صيغة ملف، بما في ذلك XLSX، ODS، CSV، HTML، PDF (عبر مكتبات خارجية)، ويمكنها العمل مع الصيغ، والتنسيق الشرطي، والخلايا المدمجة، والصور، والتعليقات.
المكتبة في تطور مستمر (أكثر من 3000 نجمة على GitHub) وتُستخدم في مشاريع مثل Laravel Excel، ومجموعة PhpOffice Suite، والعديد من الأنظمة المؤسسية. إنها مثالية لإنشاء التقارير، وترحيل البيانات، وأتمتة سير العمل، والتكامل مع أنظمة CRM/ERP.
2. طريقة التثبيت
يتم تثبيت PhpSpreadsheet عبر Composer، وهو مدير الحزم القياسي للغة PHP. تأكد من أن لديك PHP إصدار 7.4 أو أعلى (يُوصى باستخدام 8.0+).
composer require phpoffice/phpspreadsheet
بعد التثبيت، سيظهر مجلد vendor وملف composer.json في مشروعك. لاستخدام المكتبة، يكفي تضمين أداة التحميل التلقائي:
require 'vendor/autoload.php';
إذا كنت تستخدم إطار عمل (Laravel، Symfony)، فعادةً ما يتم تضمين المكتبة تلقائياً عبر مزودي الخدمة.
3. البداية السريعة — مثال عملي بسيط
لنقم بإنشاء سكربت بسيط يقوم بإنشاء ملف Excel يحتوي على جدول بيانات ويُتيح تحميله:
getActiveSheet();
// 2. تعبئة الخلايا
$sheet->setCellValue('A1', 'الاسم');
$sheet->setCellValue('B1', 'البريد الإلكتروني');
$sheet->setCellValue('A2', 'أحمد محمد');
$sheet->setCellValue('B2', 'ahmed@example.com');
$sheet->setCellValue('A3', 'سارة علي');
$sheet->setCellValue('B3', 'sara@example.com');
// 3. إعداد رؤوس التحميل
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="users.xlsx"');
header('Cache-Control: max-age=0');
// 4. كتابة الملف إلى المخرجات
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
يقوم هذا الكود بإنشاء ملف users.xlsx يحتوي على صفين من البيانات. يمكنك فتحه في Excel أو LibreOffice Calc.
4. أهم الدوال والكلاسات
4.1. Spreadsheet::__construct()
التوقيع: new Spreadsheet()
الوظيفة: إنشاء مستند جديد فارغ مع ورقة عمل افتراضية واحدة.
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
echo $sheet->getTitle(); // "Worksheet"