العمل مع Excel في PHP: مكتبات PhpSpreadsheet وPhpOffice وإنشاء ملفات XLSX

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

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

ابدأ الدورة

العمل مع Excel في PHP: مكتبات PhpSpreadsheet وPhpOffice

في تطوير الويب الحديث، غالبًا ما تنشأ الحاجة لتصدير البيانات إلى تنسيق Excel، أو استيراد التقارير، أو معالجة الجداول على جانب الخادم. تقدم PHP عدة مكتبات قوية للعمل مع ملفات .xlsx و .xls و .ods. في هذه المقالة، سنستعرض بالتفصيل PhpSpreadsheet — المكتبة الحديثة والنشطة التي حلت محل PHPExcel القديمة.



ما هي PhpSpreadsheet؟

PhpSpreadsheet هي مكتبة لقراءة وكتابة وتحرير جداول البيانات بتنسيقات مختلفة: Excel و OpenDocument و CSV و HTML و PDF. وهي مكتوبة بلغة PHP النقية، ولا تتطلب تثبيت إضافات إضافية (باستثناء الإضافات القياسية zip و xml)، وتدعم جميع إمكانيات Excel الأساسية: الأنماط، الصيغ، الرسوم البيانية، التنسيق الشرطي، أوراق متعددة، وغير ذلك الكثير.



التثبيت

يتم التثبيت عبر Composer:

composer require phpoffice/phpspreadsheet

بعد التثبيت، يظهر مجلد vendor مع التحميل التلقائي في المشروع. لبدء العمل، يكفي تضمين المحمل التلقائي:

require 'vendor/autoload.php';

use PhpOffice\\PhpSpreadsheet\\Spreadsheet;use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;


إنشاء ملف Excel بسيط

لننظر إلى مثال أساسي: سننشئ ملفًا بعناوين وعدة صفوف من البيانات.

// إنشاء كائن Spreadsheet جديد$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();

// تعيين العناوين$sheet->setCellValue('A1', 'الاسم') ->setCellValue('B1', 'البريد الإلكتروني') ->setCellValue('C1', 'تاريخ التسجيل');

// ملء البيانات$sheet->setCellValue('A2', 'إيفان إيفانوف') ->setCellValue('B2', 'ivan@example.com') ->setCellValue('C2', '2024-01-15');

$sheet->setCellValue('A3', 'ماريا بيتروفا') ->setCellValue('B3', 'maria@example.com') ->setCellValue('C3', '2024-02-20');

// حفظ الملف$writer = new Xlsx($spreadsheet);$writer->save('users.xlsx');

echo "تم إنشاء الملف users.xlsx بنجاح!";

بعد تشغيل السكريبت، سيظهر ملف users.xlsx في جذر المشروع، ويمكن فتحه في Excel أو Google Sheets.



قراءة ملف Excel موجود

تتيح PhpSpreadsheet قراءة البيانات بسهولة من أي تنسيق. مثال على تحميل وعرض المحتوى:

$inputFileName = 'users.xlsx';$spreadsheet = \\PhpOffice\\PhpSpreadsheet\\IOFactory::load($inputFileName);$sheet = $spreadsheet->getActiveSheet();

// قراءة جميع الصفوف$data = $sheet->toArray();

foreach ($data as $row) { echo implode(' | ', $row) . "";}

تعيد الدالة toArray() مصفوفة ثنائية الأبعاد، حيث العنصر الأول هو صف بمؤشرات 0,1,2... يمكنك الوصول إلى الخلايا بالعنوان: $sheet->getCell('A2')->getValue().



العمل مع الأنماط والتنسيق

من نقاط القوة في PhpSpreadsheet التحكم المرن في مظهر الجدول.

$styleArray = [    'font' => [        'bold' => true,        'size' => 12,        'color' => ['argb' => 'FF2E4057'],    ],    'fill' => [        'fillType' => \\PhpOffice\\PhpSpreadsheet\\Style\\Fill::FILL_SOLID,        'startColor' => ['argb' => 'FFD9E2EC'],    ],    'borders' => [        'allBorders' => [            'borderStyle' => \\PhpOffice\\PhpSpreadsheet\\Style\\Border::BORDER_THIN,        ],    ],];

// تطبيق النمط على النطاق$sheet->getStyle('A1:C1')->applyFromArray($styleArray);

// العرض التلقائي للأعمدةforeach (range('A','C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true);}


تصدير البيانات من قاعدة البيانات إلى Excel

غالبًا ما يكون مطلوبًا تفريغ نتائج استعلام SQL. مثال باستخدام PDO:

توصيات