Point de situation par Armel FAUVEAU
http://www.phpindex.com/index.php3
Manipuler des fichiers Excel depuis PHP est une problématique récurrente, témoins les nombreux développements autour de ce sujet. Il semblait intéressant de faire un point rapide sur la question. Et plus précisement, de lister les principales solutions existantes à ce jour.
BiffWriter
La classe de Christian Novak, actuellement dispo en version 2.1 permet de générer à la volée depuis PHP, des fichiers Excel au format BIF (Binary File Format). Régulièrement complété par son auteur, BiffWriter ne cesse de s'améliorer ces derniers temps. Du reste, Christian Novak précise qu'il compte s'attaquer à la génération de fichiers Excel au format Excel 8 très prochainement.
PHP Simple Excel File Generator
Sans doute la solution la plus ancienne. PHP Simple Excel File Generator ne semble plus évoluer depuis presque juin 2001. Cette solution présentait tout de même l'avantage de permettre la génération de fichier Excel au format Binaire, tout en restant cependant très limitée et largement perfectible.
Php_writeexcel
Derrière ce projet encore jeune se cache le portage du package Perl Spreadsheet::WriteExcel de John McNamara. A l'image de la solution précédente, il est possible de générer des fichiers Excel à la volée au format Binaire. Cette première version est déjà bien aboutie. Elle permet d'en faire plus qu'avec PHP Simple Excel File Generator. Ainsi, la colorisation ou les alignements à l'intérieure d'une cellule font partie des fonctionnalités supportées.
SYLK
SYLK n'est pas le nom d'une application en PHP, mais l'acronyme d'un format désignant Spreadsheet Symbolic Link Format. A la différence du format XLS, totalement binaire, le format SYLK peut-être ouvert depuis un éditeur. Textuel, il a été développé afin de pouvoir faciliter l'échange de données entre tableurs. Il est donc exploitable au dela du seul Excel. De plus, il est simple à exploiter depuis PHP puisqu'il suffit de suivre les specs de ce format et d'écrire nos données dans un simple fichier plat.
COM/DCOM
Exploitable seulement depuis Win32, le support COM (Component Object Model) permet d'interfacer PHP et Excel (ou autres applicatifs du reste).
PEAR/Excel
Ce package PEAR, en phase de développement, viendra lui aussi proposer une alternative à ce problème de génération de fichier Excel. Et ceci au format Binaire, semble t-il. A suivre donc.
Pour finir, nous l'avons vu, les solutions de génération (au format Binaire ou autres) sont nombreuses.
Cependant, elles sont au jour d'aujourd'hui toutes largement perfectibles voir pour la plupart encore en développement. A noter aussi que le plus gros challenge restera sans doute de permettre la manipulation connexe des fichiers Excel depuis PHP.
Comprendre, générer mais aussi relire des fichiers dans ce format. Et sur ce point, soyons clair, y-a du taf !
Bref, si vous manquiez d'idée de développement, n'hésitez pas. Le besoin est là. Il est même énorme.
Commentaires
par survietamine
Me cassant 8h/jour depuis plus semaine maintenant au sujet de l'exportation des données php/mysql en fichier .xls...je me permets de donner mon point de vue.
J'ai commencé à chercher des classes dispo dans les moteurs de recherche et les sites consacrés à PHP comme celui ci et tous indiquent BiffWriter...
J'ai moi-même écrit à l'auteur, son initiative est bonne, mais le résultat laisse à désirer. La largeur de colonne ajoute 0,29 pts à chaque fois (Christian Novak a dit que c'était un bug d'Excel...).
Autre point noir : on ne peut pas assigner la hauteur de ligne (sauf la hauteur générale de toute la feuille de calcul), là, l'auteur m'a dit que c'était trop lourd, que ça ralentirai le serveur et long à coder...
Quelle surprise quand j'ai découvert PHP_writeexcel !!!
Comme par magie, tout marche au millimètre, pratiquement toutes les fonctionnalités d'Excel sont présentes...
Et ceci n'est pas le fruit du hasard, la class PERL dont est issue ce projet était tout simplement quasi-parfaite. A trop faire primer les technologies nouvelles et brimer les anciennes qui peuvent constituer des bases solides et un certain héritage, on loupe l'essentiel souvent.
Re Armel
>J'ai commencé à chercher des classes dispo dans les
>moteurs de recherche et les sites consacrés à PHP comme
>celui ci et tous indiquent BiffWriter...
Humm, je ne pense pas que tous indiquent BiffWriter. La preuve avec cet article du reste. Mon idée était bien de faire un point sur le sujet et de présenter plusieurs alternative. Moi et la pensée unique, vous savez... :) Si je peux disperser les idées, je fonce :)
Maintenant, disons surtout que BiffWriter est de loin le projet qui bouge le plus ces derniers mois. D'ou sans doute pas mal de news à son sujet et pas mal de lien à droite ou à gauche.
Maintenant, ce n'est certainement pas LA solution :( Du reste, le recours au format d'export BIFF en lieu et place du format binaire brute peut vite sembler un point limitant aux yeux de bcp (et j'en fais partie :)).
Maintenant, il n'en reste pas moins que Biffwriter à le mérite d'exister
:) Et qu'il peut répondre à des besoins.
A noter aussi que Christian Novak répond à la plupart des mails concernant son développement.
C'est pas toujours le cas des développeurs qui lache un truc sur un coin du Web qui ne sera plus supporté et qui opte pour l'attitude 'après moi le déluge' :) Donc un bon point pour lui aussi.
>Quelle surprise quand j'ai découvert PHP_writeexcel !!!
>Comme par magie, tout marche au millimètre, pratiquement
>toutes les fonctionnalités d'Excel sont présentes...
Ce portage, même en version 0.0.0 est déjà très aboutie oui. Comme je le dis du reste dans cette article.
J'ai trouvé la chose déjà très avancée.
>A trop faire primer les technologies nouvelles et
>brimer les anciennes qui peuvent constituer des bases
>solides et un certain héritage, on loupe
>l'essentiel souvent.
Tout à fait. Vous préchez un convaincu !
Bref, je partage votre avis, modulo le fait que non, BiffWriter n'a pas été présenté comme LA seule solution. Encore une fois, cette article en est la preuve :)
Et un grand merci à vous pour ce retour d'expérience sur la question.
Armel.
Suite sur phpindex...
Les liens