PhpSpreadsheet pour PHP : guide complet avec exemples
1. Qu'est-ce que PhpSpreadsheet et pourquoi l'utiliser ?
PhpSpreadsheet est une bibliothèque PHP puissante conçue pour lire, écrire et manipuler des feuilles de calcul aux formats Excel (XLSX, XLS), LibreOffice Calc (ODS), CSV, HTML et bien d'autres. Elle succède à la célèbre bibliothèque PHPExcel, aujourd'hui obsolète et dont le développement s'est arrêté en 2017. PhpSpreadsheet a été entièrement réécrite pour respecter les standards PHP modernes (PSR-4, PSR-7, PSR-12) et gère de grands volumes de données, des formules complexes, des styles, des graphiques et la mise en forme conditionnelle.
Pourquoi en avez-vous besoin ? En développement web, on doit souvent exporter des données d'une base de données vers des rapports Excel, importer des tableaux fournis par les utilisateurs, générer des factures, des listes de prix ou des documents financiers. PhpSpreadsheet permet de le faire par programmation, sans installer de suite bureautique sur le serveur. Elle prend en charge plus de 30 formats de fichiers, dont XLSX, ODS, CSV, HTML, PDF (via des bibliothèques externes), et peut gérer les formules, la mise en forme conditionnelle, les cellules fusionnées, les images et les commentaires.
La bibliothèque est activement maintenue (plus de 3000 étoiles sur GitHub) et utilisée dans des projets comme Laravel Excel, la suite PhpOffice et de nombreux systèmes d'entreprise. Elle est idéale pour créer des rapports, migrer des données, automatiser la gestion documentaire et s'intégrer aux systèmes CRM/ERP.
2. Installation
PhpSpreadsheet s'installe via Composer, le gestionnaire de dépendances standard pour PHP. Assurez-vous d'avoir PHP version 7.4 ou supérieure (PHP 8.0+ recommandé).
composer require phpoffice/phpspreadsheet
Après l'installation, le dossier vendor et le fichier composer.json seront créés dans votre projet. Pour utiliser la bibliothèque, incluez simplement l'autoloader :
require 'vendor/autoload.php';
Si vous utilisez un framework (Laravel, Symfony), la bibliothèque est généralement chargée automatiquement via les service providers.
3. Démarrage rapide — exemple minimal
Créons un script simple qui génère un fichier Excel avec un tableau de données et le propose au téléchargement :
getActiveSheet();
// 2. Remplir les cellules
$sheet->setCellValue('A1', 'Nom');
$sheet->setCellValue('B1', 'Email');
$sheet->setCellValue('A2', 'Jean Dupont');
$sheet->setCellValue('B2', 'jean@exemple.com');
$sheet->setCellValue('A3', 'Marie Martin');
$sheet->setCellValue('B3', 'marie@exemple.com');
// 3. Configurer les en-têtes pour le téléchargement
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="utilisateurs.xlsx"');
header('Cache-Control: max-age=0');
// 4. Écrire le fichier dans la sortie
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
exit;
Ce code crée un fichier utilisateurs.xlsx avec deux lignes de données. Vous pouvez l'ouvrir dans Excel ou LibreOffice Calc.
4. Méthodes / fonctions / classes principales
4.1. Spreadsheet::__construct()
Signature : new Spreadsheet()
Fonction : Crée un nouveau document vide avec une feuille de calcul par défaut.
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
echo $sheet->getTitle(); // "Feuille1"
Aussi dans la bibliothèque
Validation des données en Kotlin : bibliothèques et approches (Kotlin, Java)
resty Go : guide complet avec exemples pratiques
nlohmann/json pour C++ : guide complet avec exemples
Envoi de SMS en C# (.NET) : Intégration avec l'API des services SMS
Traitement JSON en C++ : bibliothèques, analyse et sérialisation de données