ECRITURE D'UNE FICHIER XLS EN DYNAMIQUE

Calak Messages postés 38 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 24 janvier 2010 - 26 oct. 2007 à 16:48
yokithis Messages postés 4 Date d'inscription samedi 18 août 2007 Statut Membre Dernière intervention 13 avril 2009 - 13 avril 2009 à 14:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/44505-ecriture-d-une-fichier-xls-en-dynamique

yokithis Messages postés 4 Date d'inscription samedi 18 août 2007 Statut Membre Dernière intervention 13 avril 2009
13 avril 2009 à 14:13
merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
29 oct. 2007 à 14:53
de l'XML, oui, pas de XSL...
au pire, Excel sais le charger, a voir a partir de quelle version....

y'a des années, j'avais fait en php un truc pour écrire de l'excel, aussi, en SYLK, ça c'était galère ^^ mais ca passait sur tous les Excel :p
LeFauve42 Messages postés 239 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 20 avril 2009
29 oct. 2007 à 14:33
Salut,

J'ai du louper quelque chose, mais ca ne ressemble pas vraiment a du .xls...
Peut-etre qu'Excel est capable d'ouvrir ca et de le convertir, mais ca ressemble beaucoup a du html :o)

Accessoirement, plutot que lister les champs de tes tables en dur, tu devrais utiliser les API de description genre mysql_fetch_field()ou bien au pire essayer un truc genre :
foreach($EnregN1 as $value)
...qui diviserait la taille de ton code par environ 10 (le nombre de colonnes de ta table).
De plus, ton code qui ecrit dans le fichier est un peu brouillon (Utiliser des variables $name et $Name va sans doute t'ammener a faire des erreurs un jour ou l'autre, $ptr est inutilise...).

Une derniere remarque: Ton code est trop lie a ta base de donnees.
Si vraiment le but est de faire des fichiers Excel, tu aurais pu creer une classe ExcelFile avec des methodes genre AddLine() ou Flush().
Ce serait beaucoup plus simple a reutiliser.

Tu aussi pourrais simplement ecrire dans la sortie standard (avec print ou echo). Avec les bonnes directives header(), le navigateur interpreterait ton script comme du Xls et passerait tout seul le controle a Excel sur le poste client (ou proposerait de l'enregistrer selon sa config).
Un autre avantage d'ecrire directement: Si ta table contient 50000000 de records, le serveur ne te jetera pas avec un "out of memory".

Sinon je confirme qu'utiliser du CSV ici aurait pratiquement fait la meme chose (sauf peut-etre si tu fusionnes des cellules dans ta table HTML et que Excel est capable de garder ce formatage, ou si tu changes les couleurs).

Ah oui, si tu pouvais faire quelque chose pour l'indentation de ton source... Ce n'est pas grand chose, mais ca augmente beaucoup la facilite de comprehension :o)

A+,
Eric

NB: Par contre, pour le niveau Expert... je crois qu'il faudrait revoir ca un peu a la baisse :o)
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
28 oct. 2007 à 20:58
Salut,

Ne te braque pas à la moindre remarque que l'on fait à ton code, surtout lorsque les commentaires sont constructifs et argumentés.

Nous voulions juste t'expliquer que ton code ne tire en aucun cas profit du format XLS. Il aurait fallu utiliser un format d'échange plus neutre comme le CSV qui est vierge de mise en forme, plus léger et qui assure une meilleure comptabilité entre les logiciels de tableurs. En effet, le XLS est un format propriétaire de Windows. Bien qu'il soit lu par la majorité des logiciels de bureautique, rien ne t'assure qu'il sera supporté par un nouveau logiciel. Avec le CSV c'est plus sûr du fait de sa simplicité.

++
soul2006 Messages postés 5 Date d'inscription mardi 15 novembre 2005 Statut Membre Dernière intervention 29 août 2008
28 oct. 2007 à 19:31
Primo c'est pas un fichier csv c'est un fichier xls et je pense que mon code est trés clair moi chui pas spécialiste mais j'avais juste l'idée d'aider les gens
webdeb Messages postés 488 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 31 mars 2009 4
27 oct. 2007 à 20:38
Plutôt que de générer un tableau html, génère un fichier CSV. Pourquoi ?

1/ Parceque c'est plus propre.
2/ Pour assurer la portabilité sur différents supports ou logiciels. Le format CSV est vierge de tout formatage de données. Chaque information est uniquement séparée un caractère (le plus souvent, un point virgule). Ton tableau html quant à lui impose une présentation ce qui n'est pas forcément pratique...

++
Calak Messages postés 38 Date d'inscription mercredi 28 août 2002 Statut Membre Dernière intervention 24 janvier 2010
26 oct. 2007 à 16:48
Si j'ai bien compris ta source (parce que bon, même si ton code n'est pas compliqué, il n'est pas super clair non plus...) tu génère tout le contenu d'une page directement, en remplaçant les informations qui pourraient varier ?
En gros, tu ne tire pas profit de ce que xsl pourrait t'apporter.
Ici, pour toi, tu devrais générer un fichier xls tout parreil, mais ne mettre que les entêtes du tableau. Le reste se modifiera avec une règle de transformation xsl...
Rejoignez-nous