Version complète: sur le forum Webmaster Hub : export php vers excel
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
cirilo
Salut à tous.

Je fais un export de données vers un fichier xls.

Je crée dans un premier temps mon export dans un fichier php, ou je place mes données dans des tableaux html. Je rajoute dans les headers ce script pour generer le fichier xls :

CODE
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=dataExport.xls");


Jusque la, pas de probleme. Le fichier (dataExport.xls) est genere comme je le souhaite.

Le problème se situe au niveau de certains caracteres: apostrophe, signe euro (parmis les plus génants) qui apparaissent dans le fichier excel sous la forme de petit carré...

Quelqu'un a déjà eu le meme type de probleme ?
Faut-il faire un traitement des données avant ?
dièse
Salut à toi,

Bizarre pour les apostrophes blink.gif Sinon oui il faut faire un traitement des données à priori. Avec str_replace() par exemple.
cirilo
Merci pour ta réponse Diese.

Lorsque je fais l'export en html simple, les signes € ou encore les apostrophes apparaissent correctement dans le fichier php genere.

Tu me conseillerais de les remplacer par quoi ? Remplacer le € par son code html € par exemple ?

Merci
cirilo
Pour le code HTML de l'euro :

CODE
& # 8 3 6 4;


Le forum a directement genere le signe € ;-)
Dan
Ou encore
CODE
€

Il est plus facile à retenir wink.gif

Dan
Dudu
Ce n'est pas tout simplement un problème d'encodage ? unsure.gif
Si je ne m'abuse, Excel bénéficie de l'encodage propriétaire windows-1252 tandis qu'un fichier web est généralement encodé en utf-8 ou iso-8859-1, qui sont des encodages répondant à des normes standardisées.

Le hic, c'est que je ne sais pas si en encodant directement ta page web en windows-1252, les internautes qui n'ont pas Windows (j'en fais partie) pourront lire la page sad.gif Çà peut valoir le coup d'essayer: je suis partant pour un béta-test wink.gif
cirilo
Alors la Dudu, chapeau bas !

CODE
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">


Et hop, je vois mes signes € apparaitre correctement dans mon XLS. biggrin.gif

J'essaie de voir comment te faire tester cela si tu n'es pas sous windows. Vue que c'est une application en ligne et non un site web ouvert au public, je me suis mis d'accord avec mes clients pour que tout soit compatible windows avec IE (ok, détachez moi de ma potence et arretez de me tirer des oeufs pourris...)

Merci à tous pour votre aide :-)
Cirilo
Dudu
Tant mieux pour toi si çà marche smile.gif

Concernant les tests: en fait j'ai fait chauffer Google et j'ai trouvé une belle page codée sous Word happy.gif et bonne nouvelle tout passe très bien sur Safari smile.gif

Quant à te lancer des œufs pourris, j'ai beau être un amateur de standards ouverts et plus ou moins un *anti* Microsoft.. s'il faut développer un intranet ou une application fermée destinée à un public exclusivement Windows/IE je ne vois pas le problème d'utiliser quelques solutions propriétaires puisque le concept d'interopérabilité-compatibilité n'a plus de raisons d'être (là c'est moi qui vais me prendre les œufs à ta place maintenant biggrin.gif)
Seul hic éventuel: un nouveau DSI fanatique de Linux qui remplace tout le parc biggrin.gif
Xavier
CITATION(Dudu @ samedi 06 août 2005, 17h13)
Le hic, c'est que je ne sais pas si en encodant directement ta page web en windows-1252, les internautes qui n'ont pas Windows (j'en fais partie) pourront lire la page sad.gif Çà peut valoir le coup d'essayer: je suis partant pour un béta-test wink.gif
*
Vu le nombre de fichiers/pages web encodés en windows-1252... je crois que ça se saurait IMSTP6.gif
(il doit bien y avoir la moitié des sites qui utilisent cet encodage... même si beaucoup le déclarent comme du iso-8859-1 !)

PS : Sur PC on peut très bien lire les encodages du type MacRoman et cie wink.gif
Dudu
CITATION(Xavier @ samedi 06 août 2005, 23h22)
Vu le nombre de fichiers/pages web encodés en windows-1252... je crois que ça se saurait IMSTP6.gif
(il doit bien y avoir la moitié des sites qui utilisent cet encodage... même si beaucoup le déclarent comme du iso-8859-1 !)

PS : Sur PC on peut très bien lire les encodages du type MacRoman et cie wink.gif
*
Salut Xavier,

Oui mais tu connais mes réticences face à tout ce qui est fermé (j'allais dire "proprio" mais il y a une nuance) wink.gif
Et j'ai rajouté ensuite que tout passait très bien.

Ce qui m'a fait douter avant de tester, c'est
* que certaines pages HTML produites par Excel sont absolument illisibles. Celle-ci, par exemple est complètement explosée sous Firefox Mac (et PC aussi p-ê). Étrangement Safari qui est d'ordinaire très susceptible l'affiche très bien (et tant mieux, ce site est une vraie mine mais ce n'est pas le sujet)
* qu'en regardant mes préférences d'encodage j'ai trouvé tout et n'importe quoi.. mais aucun windows-1252
=> Donc dans un 1er temps je préférais être prudent à l'idée de conseiller cet encodage pour le web.

Mais de toutes façons, le public visé est 100% IE/Win et même sur Mac çà passe j'ai pu l'observer: que demande le peuple B)
Xavier
CITATION(Dudu @ dimanche 07 août 2005, 00h55)
Salut Xavier,

Oui mais tu connais mes réticences face à tout ce qui est fermé (j'allais dire "proprio" mais il y a une nuance) wink.gif
Dit par un utilisateur de Mac IMSTP6.gif

Cela dit, je ne suis pas sûr que cet encodage soit vraiment "fermé", il est surement défini en détail quelque part (p.ex Wikipedia possède un article dessus...)

CITATION(Dudu @ dimanche 07 août 2005, 00h55)
Ce qui m'a fait douter avant de tester, c'est
* que certaines pages HTML produites par Excel sont absolument illisibles. Celle-ci, par exemple est complètement explosée sous Firefox Mac (et PC aussi p-ê).
Pour rester hors sujet ( hypocrite.gif ), pas étonnant, le script continue après sa balise fermante...

CODE
}
fnGetIEVer();
fnBuildFrameset();
//-->
</script>
function fnInit()
{
if


CITATION(Dudu @ dimanche 07 août 2005, 00h55)
en regardant mes préférences d'encodage j'ai trouvé tout et n'importe quoi.. mais aucun windows-1252
=> Donc dans un 1er temps je préférais être prudent à l'idée de conseiller cet encodage pour le web.
Il est possible que Safari traite l'iso comme le windows-1252... parce que le windows-1252 est souvent fait passer pour de l'iso wacko.gif

Vive l'unicode ! IMSTP2.gif
FruitDeFendu
moi j'ai un problème avec les . et les ,

le fichier généré est avec des . dans les chiffres donc 10.25, 10.50 le problème cest que quand l'ont fait des additions, soustraction etc ...sous excel les calcules ne sont pas juste car il faut des , et pas des .
:/

je doit utiliser str_replace() ?
cirilo
Salut fruitdefendu,

Oui je pense que tu devrais utiliser str_replace(), mais que sur tes champs numériques, sinon tu risques à t'amuser...

Bon courage,
Cirilo
FruitDeFendu
CITATION(cirilo @ dimanche 07 août 2005, 19h27)
Salut fruitdefendu,

Oui je pense que tu devrais utiliser str_replace(), mais que sur tes champs numériques, sinon tu risques à t'amuser...

Bon courage,
Cirilo
*

je vient de faire avec str_replace et sa fonctionne merci biggrin.gif
cirilo
En utilisant cette technique pour generer un fichier excel, est il possible de bloquer l'edition d'un champs dans excel, ou encore mieux, mettre des menus deroulants ?
Bref j'ai pas trouve beaucoup de docs sur le net. Si vous avez des liens interessants sur ce sujet, je suis preneur biggrin.gif

Merci d'avance !
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.