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

A voir également:[php] exportation de php/sql vers excelExport php/sql vers excel ✓ - Forum - PHP Exporter resultat requete sql vers excel - Forum - Bases de données [PHP] Export du contenu SQL en Excel avec PHP ✓ - Forum - PHP Exporter fichier client sage vers excel ✓ - Forum - Excel Exporter calendrier outlook 2016 vers excel - Forum - Excel

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

Forum

A voir également:[php] exportation de php/sql vers excelExport php/sql vers excel ✓ - Forum - PHP Exporter resultat requete sql vers excel - Forum - Bases de données [PHP] Export du contenu SQL en Excel avec PHP ✓ - Forum - PHP Exporter fichier client sage vers excel ✓ - Forum - Excel Exporter calendrier outlook 2016 vers excel - Forum - Excel

Web: www.shapebootstrap.net

6 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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      [email protected]_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>";          }   ?>    

Dire « Merci » 28

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 56301 internautes nous ont dit merci ce mois-ci

Reply
réponses:
  • auteur

  • auteur

    Ca marche nickel, merci beaucoup !
    Une petite info pour ceux qui vont utiliser ce script :

    Attention à cette ligne :
    filename=E:\repertoire_destination\nom_fichier.xls");

    Sur serveur il faut virer le E:\repertoire_destination\ sinon le script vous proposer de télécharger votre tableau en .php :)

  • auteur

    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.

  • auteur

    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

  • auteur

    merci c'est une bonne et simple solution, vraiment bravo

  • auteur

    bonjour tout le monde ce script me propose de télécharger le tableau en .php meme si virer la ligne filename=E:\repertoire_destination\nom_fichier.xls");

  • auteur

    il ne faut pas "virer" la ligne mais écrire la ligne comme:
    header("Content-Disposition: attachment; filename=nom_fichier.xls");

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

    Bonjour, je cherche aussi à sauvegarder directement en xls sans avoir à modifier le type dans Enregistrer sous. Personne n'a de réponse ?

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 ", "

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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);    [email protected]_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 :)

Reply
réponses:
  • auteur

    pour moi sa marche pas :(
    erreur : La connexion a été réinitialisée

  • auteur

    Il faut simplement remplacer les mysql_numrows par mysql_num_rows et ne pas oublier de remplacer mysql_select_db((DB),$bdd); par le nom de la base de données !

  • auteur

    ton dernier <TR> de cette ligne : <TR><TD>Prenom</TD><TD>Nom</TD><TD>email</TD></TR><TR>'
    doit apparaitre dans ta double boucle parce que là tu en ouvre un et tu le fermes n fois (avec n le nombre d'itérations dans ta boucle)

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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.

Reply
réponses:

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

parfait ! : )

Reply
réponses:
  • auteur

  • auteur

    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

  • auteur

    if (preg_match("#^,#", $aTabReq[$i]["TOTAL_ARTICLE"]))
    {
    $aTabReq[$i]["TOTAL_ARTICLE"] = preg_replace('#,#', '0.',$aTabReq[$i]["TOTAL_ARTICLE"]);
    }

  • auteur

    plus simple, il suffit de mettre un espace (alt+0160) devant ta variable !

  • auteur

    merci pour ce script :) est ce que vous avez un script qui fait l'import des données dans une base de donnée a partir d'un fichier excel et merci :)

  • auteur

    grand merci pour ce script il marche super bien

  • auteur

    c'est super!! merciiiiiiii.....

  • auteur

    Merci pour le code il est genial
    Mais je developpe une application en php, quand j'exporte, je constate qu'il exporte aussi le menu horizontal avant d'exporter le tableau

  • auteur

    faites un processus arrière en php appelé soit par un bouton submit dans un form en target blank (pas d'affichage de la page) soit par une balise <a href... target_blank> dans ce processus ne mettez pas de fioritures (menus....) simplement l'appel au tableau avec les balises header comme montré dans l'article

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed