Arbeiten mit Excel in PHP: Bibliotheken PhpSpreadsheet, PhpOffice und XLSX-Generierung

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: Bibliotheken PhpSpreadsheet und PhpOffice

In der modernen Webentwicklung besteht häufig die Notwendigkeit, Daten in das Excel-Format zu exportieren, Berichte zu importieren oder Tabellen serverseitig zu verarbeiten. PHP bietet mehrere leistungsstarke Bibliotheken für die Arbeit mit .xlsx-, .xls- und .ods-Dateien. In diesem Artikel betrachten wir ausführlich PhpSpreadsheet – eine moderne und aktiv weiterentwickelte Bibliothek, die die veraltete PHPExcel abgelöst hat.



Was ist PhpSpreadsheet?

PhpSpreadsheet ist eine Bibliothek zum Lesen, Schreiben und Bearbeiten von Tabellenkalkulationen in verschiedenen Formaten: Excel, OpenDocument, CSV, HTML und PDF. Sie ist in reinem PHP geschrieben, erfordert keine zusätzlichen Erweiterungen (außer den Standard-Erweiterungen zip und xml) und unterstützt alle wesentlichen Excel-Funktionen: Stile, Formeln, Diagramme, bedingte Formatierung, mehrere Blätter und vieles mehr.



Installation

Die Installation erfolgt über Composer:

composer require phpoffice/phpspreadsheet

Nach der Installation erscheint im Projekt ein Ordner vendor mit Autoloading. Um zu beginnen, genügt es, den Autoloader einzubinden:

require 'vendor/autoload.php';

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


Erstellen einer einfachen Excel-Datei

Betrachten wir ein grundlegendes Beispiel: Wir erstellen eine Datei mit Überschriften und einigen Datenzeilen.

// Neues Spreadsheet-Objekt erstellen$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();

// Überschriften setzen$sheet->setCellValue('A1', 'Name') ->setCellValue('B1', 'E-Mail') ->setCellValue('C1', 'Registrierungsdatum');

// Mit Daten füllen$sheet->setCellValue('A2', 'Ivan Ivanov') ->setCellValue('B2', 'ivan@example.com') ->setCellValue('C2', '2024-01-15');

$sheet->setCellValue('A3', 'Maria Petrova') ->setCellValue('B3', 'maria@example.com') ->setCellValue('C3', '2024-02-20');

// Datei speichern$writer = new Xlsx($spreadsheet);$writer->save('users.xlsx');

echo "Datei users.xlsx erfolgreich erstellt!";

Nach dem Ausführen des Skripts erscheint im Stammverzeichnis des Projekts die Datei users.xlsx, die in Excel oder Google Sheets geöffnet werden kann.



Lesen einer vorhandenen Excel-Datei

PhpSpreadsheet ermöglicht das einfache Lesen von Daten aus jedem Format. Beispiel zum Laden und Ausgeben des Inhalts:

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

// Alle Zeilen lesen$data = $sheet->toArray();

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

Die Methode toArray() gibt ein zweidimensionales Array zurück, wobei das erste Element eine Zeile mit den Indizes 0,1,2… ist. Sie können auf Zellen auch über die Adresse zugreifen: $sheet->getCell('A2')->getValue().



Arbeiten mit Stilen und Formatierung

Eine der Stärken von PhpSpreadsheet ist die flexible Steuerung des Erscheinungsbilds der Tabelle.

$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,        ],    ],];

// Stil auf den Bereich anwenden$sheet->getStyle('A1:C1')->applyFromArray($styleArray);

// Automatische Spaltenbreiteforeach (range('A','C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true);}


Datenexport aus der Datenbank nach Excel

Häufig müssen Ergebnisse einer SQL-Abfrage exportiert werden. Beispiel mit PDO:

Empfehlungen