Archive pour avril 2004

People

jeudi 1 avril 2004 | 3617 MyLife

Hum, ça devient très people... Il faut que j'arrête sinon bientôt il y aura des photos de Lorie par ici...

Générer des fichiers Excel (XLS) avec PHP

jeudi 1 avril 2004 | Webdesign

Moulinex

Que ce soit pour extraire des informations d'une base de données (ex: MySQL) ou pour les convertir à partir d'un autre format, l'écriture de multiples fichiers Excel par un script de manière automatisée peut s'avérer utile, voire indispensable lorsqu'on vous demande plusieurs centaines de fichiers.

Pour ceci, PHPIndex a publié un mini article PHP et Excel : point de situation, qui date un peu certes mais qui faute de mieux présente des solutions manipulation de fichiers Excel depuis PHP.

Après tri selon les critères les plus courants (générer des fichiers binaires véritablement au format Excel natif, utiliser une librairie facile à installer), PHP_Writeexcel se démarque du lot. A l'aide de deux includes, la création de l'objet writeexcel_workbook (classeur) est à votre portée, ainsi que l'ajout de worksheet (feuilles) à ce classeur. Les cellules sont remplissables par ce type d'instruction : $worksheet->write(x, y, $valeur, $format); où x et y représentent les coordonnées de la cellule dans la feuille de calcul, $valeur le contenu texte de la cellule et $format le format de la cellule.

Il ne faut pas s'attendre à pouvoir définir des formats exceptionnels mais ils sont suffisants dans la plupart des cas. Couleur de fond, police, bordures, alignement du texte, etc. Il est aussi possible de définir la hauteur des lignes ou la largeur des colonnes, voire de fusionner plusieurs cellules entre elles. Les exemples fournis sont un bon point de départ, même si on peut regretter une documentation absente.

La moulinette est performante et ne peut que faire gagner du temps. Il suffit d'envoyer un petit header("Content-Type: application/x-msexcel"); pour obliger le navigateur à considérer le fichier dans le bon type (affichage ou téléchargement), ou bien de demander au script de l'écrire sur le disque. Après test en situation réelle, une centaine de classeurs comportant chacun une page basique munie d'un tableau de données de taille 6x40, sont générés en 20 secondes.