Travailler avec Excel en PHP : bibliothèques PhpSpreadsheet, PhpOffice et génération XLSX

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Excel en PHP : bibliothèques PhpSpreadsheet et PhpOffice

Dans le développement web moderne, il est souvent nécessaire d'exporter des données au format Excel, d'importer des rapports ou de traiter des tableaux côté serveur. PHP propose plusieurs bibliothèques puissantes pour travailler avec les fichiers .xlsx, .xls et .ods. Dans cet article, nous examinerons en détail PhpSpreadsheet — une bibliothèque moderne et active qui a remplacé l'ancienne PHPExcel.



Qu'est-ce que PhpSpreadsheet ?

PhpSpreadsheet est une bibliothèque pour lire, écrire et modifier des feuilles de calcul dans divers formats : Excel, OpenDocument, CSV, HTML et PDF. Elle est écrite en PHP pur, ne nécessite pas l'installation d'extensions supplémentaires (à l'exception des extensions standard zip et xml) et prend en charge toutes les fonctionnalités principales d'Excel : styles, formules, graphiques, mise en forme conditionnelle, plusieurs feuilles et bien plus encore.



Installation

L'installation se fait via Composer :

composer require phpoffice/phpspreadsheet

Après l'installation, un dossier vendor avec l'autoloading apparaît dans le projet. Pour commencer, il suffit d'inclure l'autoloader :

require 'vendor/autoload.php';

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


Création d'un fichier Excel simple

Examinons un exemple de base : créons un fichier avec des en-têtes et quelques lignes de données.

// Création d'un nouvel objet Spreadsheet$spreadsheet = new Spreadsheet();$sheet = $spreadsheet->getActiveSheet();

// Définition des en-têtes$sheet->setCellValue('A1', 'Nom') ->setCellValue('B1', 'Email') ->setCellValue('C1', 'Date d\\'inscription');

// Remplissage avec des données$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');

// Sauvegarde du fichier$writer = new Xlsx($spreadsheet);$writer->save('users.xlsx');

echo "Le fichier users.xlsx a été créé avec succès !";

Après l'exécution du script, un fichier users.xlsx apparaîtra à la racine du projet, qui peut être ouvert dans Excel ou Google Sheets.



Lecture d'un fichier Excel existant

PhpSpreadsheet permet de lire facilement les données de n'importe quel format. Exemple de chargement et d'affichage du contenu :

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

// Lecture de toutes les lignes$data = $sheet->toArray();

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

La méthode toArray() retourne un tableau bidimensionnel, où le premier élément est une ligne avec les indices 0,1,2… Vous pouvez accéder aux cellules par adresse : $sheet->getCell('A2')->getValue().



Gestion des styles et du formatage

L'un des points forts de PhpSpreadsheet est la gestion flexible de l'apparence du tableau.

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

// Application du style à la plage$sheet->getStyle('A1:C1')->applyFromArray($styleArray);

// Largeur automatique des colonnesforeach (range('A','C') as $col) { $sheet->getColumnDimension($col)->setAutoSize(true);}


Export de données depuis la base de données vers Excel

Il est souvent nécessaire d'exporter les résultats d'une requête SQL. Exemple avec PDO :

Recommendations