العمل مع CSV في PHP: مكتبة PhpSpreadsheet

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

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

ابدأ الدورة

ما هو PhpSpreadsheet ولماذا هو مطلوب؟

PhpSpreadsheet هي مكتبة PHP قوية للعمل مع جداول البيانات. تتيح لك قراءة وكتابة وتحرير ملفات بصيغ CSV و XLS و XLSX و ODS وغيرها. على عكس دوال PHP المدمجة (مثل fgetcsv)، تقدم PhpSpreadsheet نهجًا موجهًا للكائنات، ومعالجة تلقائية للترميز، ودعمًا للأنماط والصيغ والكميات الكبيرة من البيانات. المكتبة مثالية لاستيراد/تصدير البيانات من نماذج الويب، وإنشاء التقارير، والترحيل بين قواعد البيانات، والتكامل مع Excel/Google Sheets.

التثبيت

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

composer require phpoffice/phpspreadsheet

بعد التثبيت، قم بتضمين التحميل التلقائي:

require 'vendor/autoload.php';

الوظائف الأساسية

  • قراءة CSV — تحميل ملف إلى كائن Spreadsheet مع الكشف التلقائي عن الفاصل.
  • كتابة CSV — إنشاء وحفظ ملف مع إعداد الفاصل والعلامات المزدوجة و BOM.
  • العمل مع الأوراق — إنشاء وحذف وإعادة تسمية ونسخ الأوراق.
  • التنسيق — أنماط الخلايا (الخطوط، الألوان، الحدود، المحاذاة).
  • الصيغ والدوال — دعم SUM و AVERAGE و IF وغيرها.
  • معالجة البيانات الكبيرة — الكتابة المتدفقة عبر Xlsx Writer لتقليل استهلاك الذاكرة.

مثال كود: قراءة وكتابة CSV

قراءة ملف CSV وعرض البيانات:

use PhpOffice\\PhpSpreadsheet\\IOFactory;

$inputFileName = './data.csv';$spreadsheet = IOFactory::load($inputFileName);$worksheet = $spreadsheet->getActiveSheet();$data = $worksheet->toArray();

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

كتابة البيانات إلى CSV:

use PhpOffice\\PhpSpreadsheet\\Spreadsheet;use PhpOffice\\PhpSpreadsheet\\Writer\\Csv;

$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();

$sheet->setCellValue('A1', 'Имя');$sheet->setCellValue('B1', 'Email');$sheet->setCellValue('A2', 'Иван');$sheet->setCellValue('B2', 'ivan@example.com');

$writer = new Csv($spreadsheet);$writer->setDelimiter(';');$writer->setEnclosure('"');$writer->save('./output.csv');

متى يتم الاستخدام

يوصى باستخدام PhpSpreadsheet في الحالات التالية:

  • الحاجة لدعم صيغ متعددة (CSV, XLSX, ODS) في مشروع واحد.
  • الحاجة إلى تنسيق دقيق (ألوان، خطوط، دمج خلايا).
  • الحاجة للعمل مع صيغ أو مجموعات بيانات كبيرة (أكثر من 10,000 صف).
  • تفضيل أسلوب البرمجة الكائنية (OOP) وعدم الرغبة في كتابة محللات منخفضة المستوى.

للمهام البسيطة (مثل قراءة ملف CSV واحد بهيكل معروف)، يمكن الاكتفاء بدوال PHP المدمجة. ولكن إذا كان المشروع ينمو ويتطلب مرونة، فإن PhpSpreadsheet ستصبح أداة لا غنى عنها.

توصيات