[PHP] Export du contenu SQL en Excel avec PHP
Résolu/Fermé
miltonis
Messages postés
234
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
30 septembre 2022
-
16 mai 2008 à 10:19
angelusflm - 4 mars 2009 à 16:04
angelusflm - 4 mars 2009 à 16:04
A voir également:
- [PHP] Export du contenu SQL en Excel avec PHP
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Si et excel - Guide
- Word et excel gratuit - Guide
- Aller à la ligne excel - Guide
5 réponses
croy
Messages postés
453
Date d'inscription
samedi 19 janvier 2008
Statut
Membre
Dernière intervention
23 octobre 2012
114
16 mai 2008 à 10:39
16 mai 2008 à 10:39
La structure de ton script doit être différente.
Ci-dessous un exemple à décortiquer :
Ci-dessous un exemple à décortiquer :
<?php require_once("test_conf_int.php"); $bdd = mysql_connect( $DBHost, $DBUser, $DBPas s); mysql_select_db( (DB), $bdd ); $requete = @mysql_query( "SELECT name, username, email FROM jos_users" ) OR DIE( "erreur : " . mysql_error( $bdd ) ); // on vérifie le contenu de la requête, si elle est vide, on en informe l'utilisateur à l'aide d'un Javascript if( @mysql_numrows( $requete ) == 0) echo "La requête ne retourne aucun enregistrement"; else { // contenu --> $resultat $resultat = ""; $rang = 0; while( ($line = mysql_fetch_assoc($requete)) ) { $ligne = ''; if( $rang == 0 ) { // entêtes de colonne foreach( array_keys( $line ) as $lEntete ) { if( $ligne != '' ) $ligne .= ';'; $ligne .= $lEntete; } $resultat .= $ligne; } else { // données foreach( $line as $key=>$value ) { if( $ligne != '' ) $ligne .= ';'; if( !isset( $value ) OR $value=='' ) $value = ''; else { if( substr( $key,0,4) == "date" ) { $laDate = explode( "-", $value ); $value = $laDate[1] . "/" . $laDate[0]; } } $ligne .= '"' . str_replace( '"', '""', utf8_decode( $value ) ) . '"'; } } $resultat .= chr(10) . $ligne; $rang++; } // transcodage (laborieux!) iso-8859-1 >>> code Excel ???? // peut-être pas nécessaire selon codage base etc... $leS = ""; for( $i=0; $i<strlen($resultat); $i++ ) { $leCar = substr( $resultat, $i, 1 ); switch( ord( $leCar ) ) { case 0xA7 : $leCar = chr( 0xa4 ); break; case 0xB0 : $leCar = chr( 0xa1 ); break; case 0xE0 : $leCar = chr( 0x88 ); break; case 0xE2 : $leCar = chr( 0x89 ); break; case 0xE4 : $leCar = chr( 0x8A ); break; case 0xE7 : $leCar = chr( 0x8d ); break; case 0xE8 : $leCar = chr( 0x8f ); break; case 0xE9 : $leCar = chr( 0x8e ); break; case 0xEA : $leCar = chr( 0x90 ); break; case 0xEB : $leCar = chr( 0x91 ); break; case 0xEF : $leCar = chr( 0x95 ); break; case 0xE2 : $leCar = chr( 0x89 ); break; case 0xF4 : $leCar = chr( 0x99 ); break; case 0xF6 : $leCar = chr( 0x9A ); break; case 0xF9 : $leCar = chr( 0x9d ); break; case 0xFB : $leCar = chr( 0x9e ); break; case 0xFC : $leCar = chr( 0x9F ); break; } $leS .= $leCar; } // téléchargement et ouverture dans Excel du fichier header("Cache-Control: cache, must-revalidate"); header("Pragma: public"); header('Content-Type: application/excel'); header("Content-disposition: inline; filename=" . date("Y-m-d") . ".csv"); echo $leS; exit; } } ?>
miltonis
Messages postés
234
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
30 septembre 2022
19
16 mai 2008 à 11:40
16 mai 2008 à 11:40
Merci de ta réponse Croy,
J'ai testé ton code mais ça n'a pas l'air de fonctionner... il faut dire que je travaille sur un site Joomla, du coup le message est "access restricted"...
J'ai testé ton code mais ça n'a pas l'air de fonctionner... il faut dire que je travaille sur un site Joomla, du coup le message est "access restricted"...
miltonis
Messages postés
234
Date d'inscription
mercredi 6 octobre 2004
Statut
Membre
Dernière intervention
30 septembre 2022
19
16 mai 2008 à 12:09
16 mai 2008 à 12:09
STOP !!!
pas la peine de chercher plus loin !
Voici quelque chose qui marche (aussi), en tout cas sur mon serveur, si ça peut en aider certains :
merci de ton aide en tout cas Croy
a++
pas la peine de chercher plus loin !
Voici quelque chose qui marche (aussi), en tout cas sur mon serveur, si ça peut en aider certains :
<? //ce fichier montre un exemple permettant de generer un fichier excel (on peut remplacer le .csv par .xls) //parametres de connexion a la bdd include("test_02.php"); //defined( '_VALID_MOS' ) or die( 'Restricted access' ); //Premiere ligne = nom des champs (si on en a besoin) $csv_output = "LOGIN; PASS"; $csv_output .= "\n"; //Requete SQL $query = "SELECT login, pass FROM user"; $result = mysql_query($query) or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error()); //Boucle sur les resultats while($row = mysql_fetch_array($result)) { //$csv_output .= "$row[p_nom] $row[p_prenom],$row[p_nom],$row[p_prenom],$row[p_email]\n"; $csv_output .= "$row[login];$row[pass]\n"; } header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=AddressBook_" . date("Ymd").".csv"); print $csv_output; exit; ?>
merci de ton aide en tout cas Croy
a++
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Je viens de tester avec ton code mais ça marche une fois sur deux :'(
<?php //ce fichier montre un exemple permettant de generer un fichier excel (on peut remplacer le .csv par .xls) //parametres de connexion a la bdd include("connexion.php"); //defined( '_VALID_MOS' ) or die( 'Restricted access' ); //Premiere ligne = nom des champs (si on en a besoin) $csv_output = "date; etat"; $csv_output .= "\n"; //Requete SQL $query = "SELECT * FROM presence WHERE nservice = '1'"; $result = mysql_query($query) or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error()); //Boucle sur les resultats while($row = mysql_fetch_array($result)) { //$csv_output .= "$row[p_nom] $row[p_prenom],$row[p_nom],$row[p_prenom],$row[p_email]\n"; $csv_output .= "$row[date];$row[etat]\n"; } header("Content-type: application/vnd.ms-excel"); header("Content-disposition: attachment; filename=AddressBook_" . date("Ymd").".csv"); print $csv_output; exit; ?>