Création
d'entreprise
Posez votre question Signaler

[php] Exportation de php/sql vers Excel [Résolu]

Foudébois 4Messages postés 17 mai 2006Date d'inscription - Dernière réponse le 25 juil. 2011 à 16:38
Bonjour à tous,

je programme une application en php/mysql sous windows et EasyPhp 1.7

Je voudrais savoir comment faut faire pour exporter le reslutat d'une requete SQL dans un fichier Excel (.xls ou .csv)

A partir de ma requete, j'affiche un tableau qui referencie l'ensemble des projets d'une société

Donc enormement de ligne, et je voudrais donc mettre toutes ces lignes dans un fichier excel pour pouvoir les utiliser apres ...

Merci beaucoup pour les futurs reponses ;-)
Lire la suite 

[php] Exportation de php/sql vers Excel »

15 réponses
Réponse
+17
moins plus
Un petit exemple dont tu peux t'inspirer pour creer un script PHP
Le fichier conf_int.php contiendra tes mots de pass etc..
conf_int.php:
#  codes administration de BDD
$DBHost="localhost";
$DBUser="xxxxxxx";
$DBPass="yyyyyyyyy";
$DBName="ASSOC";

export_excel.php:
<?php
    // à elle seule, la ligne suivante suffit à envoyer le résultat du script dans une feuille Excel
    header("Content-type: application/vnd.ms-excel");
    // la ligne suivante est facultative, elle sert à donner un nom au fichier Excel
   header("Content-Disposition: attachment; filename=E:\repertoire_destination\nom_fichier.xls");
   require_once("conf_int.php");
   // La suite est une simple requête php-mysql. On interroge la table utilisée dans l'exemple précédent. 
   $bdd = mysql_connect($DBHost,$DBUser,$DBPass);
   mysql_select_db((DB),$bdd);
   // notez la présence du caractère arobase (@) , en cas d'erreur, 
  // il empêche PHP d'écrire un message d'erreur sur le navigateur
    $requete=@mysql_query("SELECT prenom,nom,email FROM ".(TAB)." ORDER BY nom,prenom");
    // on vérifie le contenu de  la requête ;
    if (@mysql_numrows($requete) ==0) 
        {   // si elle est vide, on en informe l'utilisateur à l'aide d'un Javascript 
            print "<script> alert('La requête n\'a pas abouti !')</script>";
        } 

   // construction du tableau HTML
  print '<table border=1>
            <!-- impression des titres de colonnes -->
             <TR><TD>Prenom</TD><TD>Nom</TD><TD>email</TD></TR><TR>';

    // lecture du contenu de la requête avec 2 boucles imbriquées; par ligne et par colonne
    for ($ligne=0 ; $ligne<@mysql_numrows($requete);$ligne++)
     {
         for ($colonne = 0;$colonne < 3 ; $colonne++)  
              {
                 print '<TD>' .mysql_result($requete , $ligne,$colonne).  '</TD>';   
              }
       print '</TR>';
      }
    print '</TABLE>';
    mysql_close();

// on informe l'utilisateur de la réussite 
   if (@mysql_numrows($requete) >0) 
        {   
            print "<script> alert('La table est bien mise à jour !')</script>";
        } 
?>

héri - 10 mai 2008 à 09:54
Bonjour
Je suis content de trouver cette idée de code. Vraiment merci.
Je note une petite erreur les fonctions mysql_numrow sont mal définies =>mysql_num_rows.
biloubil - 12 juil. 2008 à 12:03
Merci pour ce script ...mais.

A chaque
mysql_num_rows($requete)
j'ai une erreur, apparemment ce serait $requete qui derange :
$requete=mysql_query("SELECT id,cat FROM technic".(TAB)." ORDER BY id");

Si quelqu'un a une idée......

Merci de votre attention
kamna - 4 mai 2010 à 06:59
merci c'est une bonne et simple solution, vraiment bravo
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour,

Un grand merci pour ce script !
Une question au moment de sauver le fichier Excel,

Excel propose (bouton radio)
Enregistrer : (.) Classeur entier         (.) Sélection : Feuille


le type de fichier qui est proposé par défaut est :
Page Web (*.htm; *.html)

Pourtant le fichier a bien l'extension xls lorsqu'il s'ouvre.

Peut-on sauvegarder directement le fichier au format xls ?

Merci de votre réponse...

@+
Z
Ajouter un commentaire
Réponse
+0
moins plus
bonjour à tous ,
pour exporter de easy php vers excel, essaie de cliquer sur l'icone export qui se trouve dans la bare de menu à cote de"operation"
et coche l'extension CSV et clique sur executer
mais le pb c'est que l'esport ca marche mais entre chaque champ il y'a le separateur ", "
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Merci, ce code me parait super.
mais lorsque j'ouvre le fichier .xls, il est vide ! Il y a seulement le tableau avec les colonnes Prenom, Nom et Email...
Qu'est-ce qui ne va pas ?

Voici le code modifié :
<?php
header("Content-type: application/vnd.ms-excel");

require_once("test_conf_int.php");

$bdd = mysql_connect($DBHost,$DBUser,$DBPass);
mysql_select_db((DB),$bdd);

$requete=@mysql_query("SELECT name, username, email FROM jos_users");
// 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 "<script> alert('La requête n\'a pas abouti !')</script>";
} 

// construction du tableau HTML
echo '<table border=1>
<!-- impression des titres de colonnes -->
<TR><TD>Prenom</TD><TD>Nom</TD><TD>email</TD></TR><TR>';


// lecture du contenu de la requête avec 2 boucles imbriquées; par ligne et par colonne
for ($ligne = 0 ; $ligne < @mysql_numrows($requete); $ligne++) {
  for ($colonne = 0; $colonne < 3; $colonne++)  {
    print '<TD>' .mysql_result($requete , $ligne,$colonne).  '</TD>';
  }
  print '</TR>';
}
print '</TABLE>';
mysql_close();

// on informe l'utilisateur de la réussite 
if (@mysql_numrows($requete) > 0) {   
  print "<script> alert('La table est bien mise à jour !')</script>";
} 
?>


merci :)
damienmv- 30 juin 2011 à 15:42
pour moi sa marche pas :(
erreur : La connexion a été réinitialisée
Ajouter un commentaire
Réponse
-1
moins plus
Bonjour, peut on, avec ce script definir la largeur du tableau, choisir la police du texte, pourquoi une couleur de fond pour la ligne des titres ?
Si oui, le fait on en utilisant le language HTML pour notre tableau ?
Merci.
Stéphane - 5 janv. 2010 à 16:37
Pour pouvoir créer des fichiers Excel en PHP et pouvoir gérer la mise en forme, il faut utiliser la classe Spreadsheet Excel (http://pear.php.net/package/Spreadsheet_Excel_Writer) de PEAR (http://pear.php.net).
Ajouter un commentaire
Réponse
-2
moins plus
parfait ! : )
Redani - 17 juil. 2008 à 17:19
Excellente idee de passer par une page HTML :) merci!

Et sauriez vous comment faire pour preserver les '0' au debut d'une chaine de caractere?

Merci bien
momo - 15 mars 2011 à 14:22
if (preg_match("#^,#", $aTabReq[$i]["TOTAL_ARTICLE"]))
{
$aTabReq[$i]["TOTAL_ARTICLE"] = preg_replace('#,#', '0.',$aTabReq[$i]["TOTAL_ARTICLE"]);
}
stAn - 25 juil. 2011 à 16:38
plus simple, il suffit de mettre un espace (alt+0160) devant ta variable !
Ajouter un commentaire
Ce document intitulé « [php] Exportation de php/sql vers Excel » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?