PHP में Excel के साथ काम करना: सर्वश्रेष्ठ लाइब्रेरीज़ का अवलोकन
स्प्रेडशीट प्रोसेसिंग वेब डेवलपमेंट में सामान्य कार्यों में से एक है। PHP में Excel फ़ाइलें बनाने, पढ़ने और संपादित करने के लिए कई सिद्ध टूल मौजूद हैं। इस लेख में हम दो प्रमुख लाइब्रेरीज़ पर विचार करेंगे: PhpSpreadsheet (लोकप्रिय PHPExcel का उत्तराधिकारी) और हल्की OpenSpout, जो बड़ी फ़ाइलों को तेज़ी से लिखने और पढ़ने के लिए डिज़ाइन की गई है।
1. Composer के माध्यम से इंस्टॉलेशन
दोनों लाइब्रेरीज़ मानक पैकेज मैनेजर Composer के माध्यम से इंस्टॉल की जाती हैं। प्रोजेक्ट की रूट डायरेक्टरी में टर्मिनल में निम्नलिखित चलाएँ:
# PhpSpreadsheet के लिए (Excel के साथ पूर्ण-सुविधा युक्त कार्य)composer require phpoffice/phpspreadsheet
# OpenSpout के लिए (बड़े डेटा पर उच्च प्रदर्शन)composer require openspout/openspoutइंस्टॉलेशन के बाद, स्क्रिप्ट की शुरुआत में ऑटोलोडिंग शामिल करें:
require_once __DIR__ . '/vendor/autoload.php';2. PhpSpreadsheet: Excel फ़ाइलें बनाना और स्टाइल करना
लाइब्रेरी XLSX, XLS, ODS, CSV और अन्य फ़ॉर्मेट को सपोर्ट करती है। यह स्टाइल प्रबंधित करने, सेल मर्ज करने, इमेज और फ़ॉर्मूले डालने की अनुमति देती है।
उदाहरण: एक सरल रिपोर्ट बनाना
use PhpOffice\\PhpSpreadsheet\\Spreadsheet;use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;use PhpOffice\\PhpSpreadsheet\\Style\\Alignment;
$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();
// हेडर$sheet->setCellValue('A1', 'उत्पाद');$sheet->setCellValue('B1', 'मात्रा');$sheet->setCellValue('C1', 'मूल्य, रु.');
// डेटा$data = [ ['लैपटॉप', 5, 45000], ['मॉनिटर', 10, 15000], ['कीबोर्ड', 20, 2500],];$row = 2;foreach ($data as $item) { $sheet->setCellValue("A{$row}", $item[0]); $sheet->setCellValue("B{$row}", $item[1]); $sheet->setCellValue("C{$row}", $item[2]); $row++;}
// कुल का फ़ॉर्मूला$sheet->setCellValue("A{$row}", 'कुल');$sheet->setCellValue("C{$row}", "=SUM(C2:C" . ($row-1) . ")");
// हेडर की स्टाइलिंग$styleHeader = [ 'font' => ['bold' => true, 'size' => 12], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_CENTER], 'fill' => ['fillType' => \\PhpOffice\\PhpSpreadsheet\\Style\\Fill::FILL_SOLID, 'color' => ['rgb' => 'E0E0E0']]];$sheet->getStyle('A1:C1')->applyFromArray($styleHeader);
// कॉलम की ऑटो-चौड़ाईforeach (range('A', 'C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true);}
// सेव करना$writer = new Xlsx($spreadsheet);$writer->save('report.xlsx');echo "फ़ाइल report.xlsx बन गई!";मौजूदा XLSX फ़ाइल पढ़ना
use PhpOffice\\PhpSpreadsheet\\IOFactory;
$inputFileName = 'example.xlsx';$spreadsheet = IOFactory::load($inputFileName);$sheet = $spreadsheet->getActiveSheet();
$highestRow = $sheet->getHighestRow();$highestColumn = $sheet->getHighestColumn();
for ($row = 1; $row <= $highestRow; $row++) { $rowData = $sheet->rangeToArray("A{$row}:{$highestColumn}{$row}", NULL, TRUE, FALSE); echo implode(', ', $rowData[0]) . "<br>";}3. OpenSpout: बड़ी तालिकाओं के साथ तेज़ काम
OpenSpout स्ट्रीमिंग राइटिंग और रीडिंग के लिए अनुकूलित है। यह स्टाइल और फ़ॉर्मूले को सपोर्ट नहीं करता, लेकिन हज़ारों पंक्तियों के डेटा (जैसे, डेटाबेस से निर्यात) के निर्यात के लिए आदर्श है।
उदाहरण: CSV/XLSX में 10,000 पंक्तियाँ लिखना
use OpenSpout\\Writer\\XLSX\\Writer;use OpenSpout\\Common\\Entity\\Row;
$writer = new Writer();$writer->openToFile('big_export.xlsx');
// हेडर$headerRow = Row::fromValues(['ID', 'नाम', 'Email']);$writer->addRow($headerRow);
for ($i = 1; $i <= 10000; $i++) { $row = Row::fromValues([$i, "User{$i}", "user{$i}@example.com"]); $writer->addRow($row);}
$writer->close();echo "निर्यात पूरा हुआ!";बड़ी XLSX फ़ाइल को पंक्ति दर पंक्ति पढ़ना
use OpenSpout\\Read