Dans mon boulot, j’ai un jour été confronté au problème d’un client : exporter des données dans un tableau Excel. Il existe quelques librairies qui le font plus ou moins bien, j’ai retenu pour vous la meilleure, selon mon expérience.
Non seulement cette librairie permet d’exporter au format Excel 97 (.xls), Excel 2007 (.xlsx), CSV, HTML et PDF, elle permet aussi d’importer les informations contenues dans un classeur existant.
Au niveau des fonctionnalités, PHPExcel en propose un large choix, toutes très bien documentées.
Quelques-uns des points clés à retenir :
- Ecriture et lecture de classeurs Excel
- Le traitement des données se passe en mémoire, gain de rapidité.
- Permet d’utiliser plusieurs feuilles au sein d’un même classeur
- API claire et plutôt simple
- Permet d’utiliser des images, des formules, de choisir le format des cellules
Pour une liste exhaustive des fonctions proposées, je vous invite à regarder ici.
Exemple d’utilisation de la libraire :
<?php /** Afficher toutes les erreurs */ error_reporting(E_ALL); /** Ajoutons les classes PHPExcel à l'include_path **/ ini_set('include_path', ini_get('include_path').';../Classes/'); /** PHPExcel */ include 'PHPExcel.php'; /** PHPExcel_Writer_Excel2007 */ include 'PHPExcel/Writer/Excel2007.php'; // Créer un nouvel objet PHPExcel echo date('H:i:s') . " Create new PHPExcel object\n"; $objPHPExcel = new PHPExcel(); // Ajoutons les propriétés du classeur echo date('H:i:s') . " Set properties\n"; $objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); // Ajoutons quelques données echo date('H:i:s') . " Add some data\n"; $objPHPExcel->setActiveSheetIndex(0); $objPHPExcel->getActiveSheet()->SetCellValue('A1', 'Hello'); $objPHPExcel->getActiveSheet()->SetCellValue('B2', 'world!'); $objPHPExcel->getActiveSheet()->SetCellValue('C1', 'Hello'); $objPHPExcel->getActiveSheet()->SetCellValue('D2', 'world!'); // Renommer le nom de la feuille echo date('H:i:s') . " Rename sheet\n"; $objPHPExcel->getActiveSheet()->setTitle('Simple'); // Enregistrer le tout dans un document .xlsx echo date('H:i:s') . " Write to Excel2007 format\n"; $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $objWriter->save(str_replace('.php', '.xlsx', __FILE__)); // Terminé echo date('H:i:s') . " Done writing file.\r\n";
Vous trouverez le tout sur la page Codeplex du projet.