13 déc. 2008
Exporter le résultat d'une requête SQL en CSV et XLS
12:30
Jean-Christophe Duvivier
PHP
SQL
Je vous propose un petit script PHP afin d'exporter facilement vos données SQL en .CSV ou .XLS. C'est simple, compréhensible, et surtout, facile à mettre en place ;)
<?php // Inclusion des paramètres de connexion à votre base de données require_once('config.php'); // Titre des colonnes de votre fichier .CSV ou .XLS $fichier = "Nom; Prenom; Mail; Adresse"; $fichier .= "\n"; // Requête SQL $sql = "SELECT * FROM personnes"; $req = mysql_query($sql); // Enregistrement des résultats ligne par ligne while($row = mysql_fetch_object($req)) { $fichier .= "".$row->nom.";".$row->prenom.";".$row->mail.";".$row->adresse."\n"; } // Déclaration du type de contenu header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=Personnes.csv"); // Remplacer .csv par .xls pour exporter en .XLS print $fichier; exit; ?>
Si vous remarquez une erreur qui s'est glissée dans le script ou si vous avez une question, n'hésitez pas à m'en faire part à la suite de ce sujet ;)
Julian Beever, maître du trompe l'oeil urbain




novembre 2011
Commentaires
Le 17 déc. 2008 à 15:44
Bonjour,
Dans la 4eme ligne en partant du bas, a propos du commentaire ==> je ne vois pas le .CSV que l'on pourrait remplacer par .XLS.
(perso, je cherche encore pour export en .txt, mais au moins, ça clarifie ton code ;) )
Le 17 déc. 2008 à 16:19
Oups, il a disparu involontairement. C'est corrigé ^^
Tu peux remplacer le .csv par .txt, mais il ne te prendra pas en compte tes ";" (changement de colonne) et tes "\n" (changement de ligne)...
Mieux vaut utiliser les fichiers, ça reste la méthode la plus simple...
Le 07 janv. 2009 à 09:36
Salut,
Ton script marche impec.
Par contre, est ce que tu connaitrais comment faire en sorte que le fichier s'enregistre tout seul dans un répertoire défini.
Car là, cela appelle la boite de dialogue ce qui empêche un mode "automatique".
Le 26 avr. 2009 à 09:28
Bonjour et merci pour ton appli.
Bon, j'ai un pb car je debute en php...
lorsque je charge ton script j'ai les erreurs suivantes :
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /homez.131/tenproje/www/extraction/test.php on line 14
Warning: Cannot modify header information - headers already sent by (output started at /homez.131/tenproje/www/extraction/test.php:14) in /homez.131/tenproje/www/extraction/test.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at /homez.131/tenproje/www/extraction/test.php:14) in /homez.131/tenproje/www/extraction/test.php on line 21
Nom; Prenom; Mail; Adresse
Peux tu m'aider sachant que je souhaiterais afficher le nom (lastname), le prenom(firstname) l'email (email) et la date de naissance (cb_datedenaissance )
Merci beaucoup pour ton aide !
Le 26 avr. 2009 à 11:49
Salut !
Le mieux serait que tu m'envoies l'intégralité de tes scripts pour que je puisse chercher les éventuelles erreurs ;)
-> contact@jchristophe.fr
Le 25 juin 2009 à 15:10
Salut tout le monde,
Bravo pour le script !!!
Il marche très bien !! Super génial !!! Félicitation !!!
Bon courage et surtout faut continuer à partager des sources comme ça.
Le 22 juil. 2009 à 16:52
Salut !
Dans mon cas, le fichier excel ne se crée pas. Par contre, dans ma page résultats.php toutes les données qui devainet se retrouvées dans le fichier excel sont inscrites dans cette page html.
des suggestions ? :)
Merci !
Le 22 sept. 2009 à 11:14
Bonjour,
Lorsque je modifie ton script pour l'adapter à ma BdD, le fichier CSV qui en résulte affiche environ 200 lignes avec du code pour Excel !
Y a t'il moyen de corriger cela ?
Lorsque je l'exporte en Excel cela m'affiche le contenu de ma page HTML !!
A+
Olivier
Le 19 fév. 2010 à 14:34
bonjour,
j'ai un souci avec le ; qui normalement permet le changement de colonne, il ne parait plus fonctionner.
est ce que cela vient de office 2007 ?
une idéee
Le 09 mar. 2010 à 23:17
C'est exactement celui que j'ai codé de mon côté et ça marche plutôt bien. Le seul "hic" c'est que pour exporter un gros volume de fiche, je trouve ça un peu lent. N'y a-t-il pas une solution en PHP qui fasse la même chose que la commande BCP (exporter le résultat de la requête en bloc) ?
Le 16 mar. 2010 à 22:06
Merci beaucoup pour ce code tout simple mais qui fonctionne et qui fait bien ce qu'on lui demande ! Et en plus il marche aussi sous linux avec open office.
Le 01 avr. 2011 à 16:57
Bonjour
ce code m a l air sympa et certains arrivent à le faire fonctionner. moi non.
jai ce résultat:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in C:\wamp\www\MINO-SITE\EXPORTER\Sanstitre-2.php on line 14
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\MINO-SITE\EXPORTER\Sanstitre-2.php:14) in C:\wamp\www\MINO-SITE\EXPORTER\Sanstitre-2.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\MINO-SITE\EXPORTER\Sanstitre-2.php:14) in C:\wamp\www\MINO-SITE\EXPORTER\Sanstitre-2.php on line 21
nom; mel; niveau; valide
voila mon code:
<?php
// Inclusion des paramètres de connexion à votre base de données
require_once('connexion.php');
// Titre des colonnes de votre fichier .CSV ou .XLS
$fichier = "nom; mel; niveau; valide";
$fichier .= "\n";
// Requête SQL
$sql = "SELECT * FROM pass_professeur";
$req = mysql_query($sql);
// Enregistrement des résultats ligne par ligne
while($row = mysql_fetch_object($req))
{
$fichier .= "".$row->nom.";".$row->mel.";".$row->niveau.";".$row->valide."\n";
}
// Déclaration du type de contenu
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=Personnes.csv"); // Remplacer .csv par .xls pour exporter en .XLS
print $fichier;
exit;
?>
merci de votre aide
stephi
Le 04 avr. 2011 à 11:02
Apparemment ce serait un problème au niveau de ta requête SQL. Le nom de ta table est bon ?
Le 05 oct. 2011 à 16:54
Salut.
Tiens je viens de tomber là dessus:
http://dsampaolo.com/blog/206-csv-m...
Ca a l'air pas mal, non? (je n'ai pas eu le temps de tester)
Le 02 nov. 2011 à 06:25
Salut !
Sympa le script, comment faire sur ta base de script pour enregistrer le fichier (csv ou xls) sur le serveur ? car la il telecharge le fichier.
Merci !
Le 20 nov. 2011 à 18:21
bonjour,
j'ai un souci avec le ; qui normalement permet le changement de colonne, il ne parait plus fonctionner.
est ce que cela vient de office 2003 ?
une idéee