Arbeiten mit Excel in PHP: Bibliotheken PhpSpreadsheet und OpenSpout

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit Excel in PHP: Überblick über die Bibliotheken PhpSpreadsheet und OpenSpout



Das Arbeiten mit Excel-Tabellen ist eine der häufigsten Aufgaben in der Webentwicklung mit PHP. Ob es um die Generierung von Berichten, den Import von Daten aus Buchhaltungssystemen oder den Export von Statistiken für Kunden geht – ohne Werkzeuge für die Formate .xlsx und .xls kommt man nicht aus. In diesem Artikel betrachten wir zwei der beliebtesten PHP-Bibliotheken: PhpSpreadsheet (Nachfolger des berühmten PHPExcel) und OpenSpout (eine leichte Alternative für große Dateien).



PhpSpreadsheet – ein leistungsstarkes und funktionsreiches Werkzeug



PhpSpreadsheet ist eine Bibliothek des Projekts PHPOffice, mit der Sie Excel-Dateien (XLSX, XLS, ODS, CSV und andere) lesen, erstellen und ändern können. Sie unterstützt Zellenstyling, Formeln, Diagramme, bedingte Formatierung und sogar die Arbeit mit Makros.



Installation von PhpSpreadsheet

Die Installation erfolgt über Composer:

composer require phpoffice/phpspreadsheet


Beispiel: Erstellen einer einfachen Excel-Datei

<?phprequire 'vendor/autoload.php';

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

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

// Daten ausfüllen$sheet->setCellValue('A1', 'ID');$sheet->setCellValue('B1', 'Name');$sheet->setCellValue('C1', 'E-Mail');$sheet->setCellValue('A2', 1);$sheet->setCellValue('B2', 'Ivan Petrov');$sheet->setCellValue('C2', 'ivan@example.com');

// Überschrift stylen$styleArray = [ 'font' => ['bold' => true, 'size' => 14], 'fill' => ['fillType' => 'solid', 'startColor' => ['rgb' => 'E0E0E0']]];$sheet->getStyle('A1:C1')->applyFromArray($styleArray);

// Datei speichern$writer = new Xlsx($spreadsheet);$writer->save('users.xlsx');echo "Datei users.xlsx wurde erstellt!";?>


Lesen einer vorhandenen Excel-Datei

<?phprequire 'vendor/autoload.php';

use PhpOffice\\PhpSpreadsheet\\IOFactory;

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

foreach ($sheet->getRowIterator() as $row) { $cellIterator = $row->getCellIterator(); $cellIterator->setIterateOnlyExistingCells(false); $rowData = []; foreach ($cellIterator as $cell) { $rowData[] = $cell->getValue(); } echo implode(' | ', $rowData) . "<br>";}?>


OpenSpout – Leichtigkeit und Geschwindigkeit für große Datenmengen



OpenSpout ist eine Bibliothek, die für die Arbeit mit großen Datenmengen (Hunderttausende von Zeilen) entwickelt wurde. Im Gegensatz zu PhpSpreadsheet lädt sie nicht die gesamte Datei in den Speicher, sondern verarbeitet sie streamend. Dies macht sie ideal für den Export/Import umfangreicher Berichte. OpenSpout unterstützt die Formate XLSX, CSV und ODS.



Installation von OpenSpout

composer require openspout/openspout


Beispiel: Export von 100.000 Zeilen in XLSX

<?phprequire 'vendor/autoload.php';

use OpenSpout\\Writer\\XLSX\\Writer;

$writer = new Writer();$writer->openToFile('big_export.xlsx');

// Überschriften$writer->addRow(['ID', 'Name', 'E-Mail']);

for ($i = 1; $i <= 100000; $i++) { $writer->addRow([$i, "Benutzer $i", "user$i@example.com"]);}

$writer->close();echo "Datei big_export.xlsx mit 100.000 Zeilen wurde erstellt!";?>


Lesen einer großen Datei mit OpenSpout

<?phprequire 'vendor/autoload.php';

use OpenSpout\\Reader\\XLSX\\Reader;

$reader = new Reader();$reader->open('big_export.xlsx');

foreach ($reader->getSheetIterator() as $sheet) { foreach ($sheet->getRowIterator() as $row) { $cells = $row->getCells(); echo implode(' | ', array_map(function($cell) { return $cell->getValue(); }, $cells)) . "<br>"; }}?>

Empfehlungen