Arbeiten mit Excel in PHP: Überblick über die besten Bibliotheken
Die Verarbeitung von Tabellenkalkulationen ist eine häufige Aufgabe in der Webentwicklung. Für PHP gibt es mehrere bewährte Werkzeuge zum Erstellen, Lesen und Bearbeiten von Excel-Dateien. In diesem Artikel betrachten wir zwei Schlüsselbibliotheken: PhpSpreadsheet (Nachfolger des beliebten PHPExcel) und die leichte OpenSpout, die für schnelles Schreiben und Lesen großer Dateien konzipiert ist.
1. Installation über Composer
Beide Bibliotheken werden mit dem Standard-Paketmanager Composer installiert. Führen Sie im Terminal im Projektstammverzeichnis aus:
# Für PhpSpreadsheet (voll funktionsfähige Arbeit mit Excel)composer require phpoffice/phpspreadsheet
# Für OpenSpout (hohe Leistung bei großen Datenmengen)composer require openspout/openspoutNach der Installation binden Sie den Autoloader am Anfang des Skripts ein:
require_once __DIR__ . '/vendor/autoload.php';2. PhpSpreadsheet: Erstellung und Styling von Excel-Dateien
Die Bibliothek unterstützt die Formate XLSX, XLS, ODS, CSV und andere. Sie ermöglicht die Verwaltung von Stilen, das Zusammenführen von Zellen, das Einfügen von Bildern und Formeln.
Beispiel: Erstellung eines einfachen Berichts
use PhpOffice\\PhpSpreadsheet\\Spreadsheet;use PhpOffice\\PhpSpreadsheet\\Writer\\Xlsx;use PhpOffice\\PhpSpreadsheet\\Style\\Alignment;
$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();
// Überschriften$sheet->setCellValue('A1', 'Produkt');$sheet->setCellValue('B1', 'Anzahl');$sheet->setCellValue('C1', 'Preis, EUR');
// Daten$data = [ ['Laptop', 5, 45000], ['Monitor', 10, 15000], ['Tastatur', 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++;}
// Summenformel$sheet->setCellValue("A{$row}", 'Gesamt');$sheet->setCellValue("C{$row}", "=SUM(C2:C" . ($row-1) . ")");
// Styling der Überschriften$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);
// Automatische Spaltenbreiteforeach (range('A', 'C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true);}
// Speichern$writer = new Xlsx($spreadsheet);$writer->save('report.xlsx');echo "Datei report.xlsx erstellt!";Lesen einer vorhandenen XLSX-Datei
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: Schnelle Arbeit mit großen Tabellen
OpenSpout ist für das Streaming-Schreiben und -Lesen optimiert. Es unterstützt keine Stile und Formeln, ist aber ideal für den Export von Tausenden von Datenzeilen (z. B. Datenbankexport).
Beispiel: Schreiben von 10.000 Zeilen in CSV/XLSX
use OpenSpout\\Writer\\XLSX\\Writer;use OpenSpout\\Common\\Entity\\Row;
$writer = new Writer();$writer->openToFile('big_export.xlsx');
// Überschriften$headerRow = Row::fromValues(['ID', 'Name', '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 "Export abgeschlossen!";Zeilenweises Lesen einer großen XLSX-Datei
use OpenSpout\\Read Auch in der Bibliothek
Cheerio für JavaScript (Node.js): Komplettguide mit Beispielen
golangci-lint für Go: Vollständige Anleitung mit Beispielen
migrate für Go: Vollständige Anleitung mit Beispielen
GraphQL in C# (.NET): Vollständiger Leitfaden zur Bibliothek GraphQL.NET
Swagger/OpenAPI-Generierung für C++: Überblick über Tools und Bibliotheken