Page 1 sur 4

Exportation d'une requete vers Excel via PHP

Posté : 17 mai 2006, 10:55
par Ish
Bonjour à tous,

je voudrais grâce à du php envoyer le resultat d'une requete dans un fichier Excel

Code : Tout sélectionner

SELECT * FROM etudiant WHERE sexe='H'
Je ne vois pas bien comment faire .... pour envoyer tout ca dans un fichier : tab.xls

On m'a très très vaguement expliqué que je pourrais y arriver avec des "Headers" .... mais pffffffff :shock:
Je vois pas bien !!!!

Merci

Posté : 17 mai 2006, 10:59
par ouckileou
Regarde à la page du SELECT : http://dev.mysql.com/doc/refman/5.0/fr/select.html
Le passage sur "INTO OUTFILE"

Tu peux aussi cherche le sujet sur le forum, ç a déjà été traité

Et un jour peut-être, Zeus finira son tuto :lol:

Posté : 17 mai 2006, 11:02
par Ish
Aaaaaahhhh... faut que je parle à Zeus entre 4 oeils

Ok ok ok ... vais voir ça alors !!!

Posté : 17 mai 2006, 11:04
par zeus
Et un jour peut-être, Zeus finira son tuto :lol:
Curieuse coincidence mais en nettoyant mon PC, je suis rentombe dessus ... et je m'y suis remis hier soir ;)

Sinon, pour ton problème, SELECT INTO OUTFILE ne te permettra que d'enregistrer au format CSV puis d'importer en xls via Excel.

Si tu veux directement enregistrer en Excel, tu peut te renseigner également sur la librairie PEAR:excel_writer

Posté : 17 mai 2006, 11:13
par Ish
Sinon j'ai regarder un peu les tutaux un peu partout et autre part :lol: !!!!

Et j'ai vu des choses interessante avec des "Headers" .... du style

Code : Tout sélectionner

header("Content-type: application/vnd.ms-excel");
ca vous dit quelque chose ????

Posté : 17 mai 2006, 11:29
par zeus
Oui, mais il me semble que ça ne fonctionne que sous IE, Microsoft oblige ;)

Posté : 17 mai 2006, 11:29
par ouckileou
En fait tu va pas faire du "Excel" mais du CSV, c'est à dire des données séparées par des , et des ;
Et avec une mise en forme très très simplette

Donc tu pourrais aussi faire un fopen(), des fwrite() en formatant les données et un fclose() en PHP, ça serait pareil. Sauf que ça serait bien plus lent à prioris.

Pour le coup des headers, ce ne sont pas eux tout seul qui vont te créer un fichier et écrire tes données dedans.

Edition : connais pas ton header spécial là, tu peux toujours essayer :P
J'avais oublié plein de mots en +

Posté : 17 mai 2006, 11:34
par Ish
Donc ca veux dire que faire des "header" m'amenerais à du Excel CSV ...
donc à exploiter, c'est pas le top ....

parceque le but après ca sera d'exploiter ces fichier donc si je peux rien en faire ... huumm pas cool

Posté : 17 mai 2006, 11:39
par zeus
le header ne va que te permettre d'afficher les données, pas de les enregistrer.

Pour les enregistrer dans un fichier, il faut soit que tu utilise SELECT INTO OUFILE pour enregistrer en CSV ou la librairie PEAR pour enregistrer dans un fichier Excel

Posté : 17 mai 2006, 11:41
par ouckileou
C'est pas impossible non plus, il y a une classe PHP qui te fait de très beaux documents Excel avec tout ce que tu veux (elle n'est pas gratuite)

Et si tu n'as pas besoin de mise en forme complexe, le CSV convient très bien pour avoir un fichier Excel basique

Posté : 17 mai 2006, 12:19
par Ish
Moi j'ai besoin de l'afficher .... apres lorsqu'il me l'ouvre en CSV .... je n'aurais qu'à l'enregistrer ....

nan ?

Posté : 17 mai 2006, 12:29
par zeus
Je pense que tu n'as pas très bien compris le problème

Tu diposes de données qui sont dans ta base de données.
Afin de les obtenir au format CSV, tu as 2 moyens :
- SELECT INTO OUTFILE
- récupération des données et mise en forme avec PHP

Dès lors, l'afficher ou l'enregistrer dans un fichier n'est qu'une présentation et tu peux choisir l'un ou l'autre à ta guise. Pourquoi ne pas l'enregistrer directement plutôt que l'afficher pour l'enregistrer manuellement ?

Posté : 17 mai 2006, 12:39
par Ish
Oui c'est sur ... pourkoi se prendre la tête à l'afficher puis à l'enregistrer ..
Et effectivement je n'ai pas compris ... !!

Lorsque je vais faire ma fonction qui va m'exporter tout ca ... ya une fentre d'enregistrement qui va s'ouvrir pour me demander, ou est-ce que je veux l'enregistrer ??
Ou ca va le faire directement je vais lui dire en parametre le nom du fichier et cela va me l'enregistrer (remplie) !!

Posté : 17 mai 2006, 14:04
par zeus
Je vais essayer de reprendre le problème calmement.

Tu veux exporter des données au format Excel, ou au moins CSV, et proposer au client de l'enregistrer sur son poste, c'est ça ?

ce qui reste le plus simple à faire, c'est de générer puis d'enregistrer le fichier d'export puis de forcer le téléchargement sur le post client.

Si tu donnes l'url d'un fichier csv à ton navigateur, il va l'afficher, pas proposer le téléchargement

Posté : 17 mai 2006, 14:26
par Ish
Ok c'est ca ....
exporter des données au format Excel, ou au moins CSV, et proposer au client de l'enregistrer sur son poste,
Donc grâce au "Select inputFile " ca va etre possible !