Aller au contenu

export php vers excel


Sujets conseillés

Posté

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 :

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 ?

Posté

Salut à toi,

Bizarre pour les apostrophes :blink: Sinon oui il faut faire un traitement des données à priori. Avec str_replace() par exemple.

Posté

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

Posté (modifié)

Pour le code HTML de l'euro :

& # 8 3 6 4;

Le forum a directement genere le signe ;-)

Modifié par cirilo
Posté

Ce n'est pas tout simplement un problème d'encodage ? :unsure:

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 :( Çà peut valoir le coup d'essayer: je suis partant pour un béta-test ;)

Posté

Alors la Dudu, chapeau bas !

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

Et hop, je vois mes signes apparaitre correctement dans mon XLS. :D

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

Posté

Tant mieux pour toi si çà marche :)

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

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 :D)

Seul hic éventuel: un nouveau DSI fanatique de Linux qui remplace tout le parc :D

Posté
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 :( Çà peut valoir le coup d'essayer: je suis partant pour un béta-test ;)

<{POST_SNAPBACK}>

Vu le nombre de fichiers/pages web encodés en windows-1252... je crois que ça se saurait :fou:

(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 ;)

Posté
Vu le nombre de fichiers/pages web encodés en windows-1252... je crois que ça se saurait :fou:

(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 ;)

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) ;)

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)

Posté
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) ;)

Dit par un utilisateur de Mac :fou:

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...)

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: ), pas étonnant, le script continue après sa balise fermante...

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

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:

Vive l'unicode ! :fete:

Posté

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() ?

Posté

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

Posté
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

<{POST_SNAPBACK}>

je vient de faire avec str_replace et sa fonctionne merci :D

Posté

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 :D

Merci d'avance !

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...