Comment exporter le résultat d’une requête MySQL en Excel avec PHP

Par défaut

Bonjour, aujourd’hui je vais vous montrer comment exporter le résultat d’une requête MySQL en Excel en utilisant PHP.

[pastacode lang= »php » manual= »%3C%3Fphp%0A%2F%2F%20Information%20de%20connexion%20%C3%A0%20notre%20base%20de%20donn%C3%A9es%0Adefine(‘HOST’%2C’localhost’)%3B%20%2F%2F%20adresse%20du%20serveur%20MySQL%0Adefine(‘USER’%2C’root’)%3B%20%2F%2F%20Utilisateur%20de%20notre%20Serveur%20MySQL%0Adefine(‘PASSWORD’%2C »)%3B%20%2F%2F%20%20Mot%20de%20passe%20de%20l’utilisation%20MySQL%0Adefine(‘DATABASE’%2C’geschools’)%3B%20%2F%2F%20Nom%20de%20la%20Base%20de%20donn%C3%A9es%0A%0A%2F%2F%20Ma%20requ%C3%AAte%20SQL%20(Vous%20pouvez%20modifier%20la%20requete%20selon%20la%20structure%20de%20votre%20table%0A%24sql%3D’SELECT%20nom%2Cprenom%2Csexe%2Cadresse%2Cville%2Ccontact%20FROM%20clients’%3B%0A%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%20NE%20MODIFIER%20PAS%20CE%20QUI%20SUIT%20%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%09%09%09%09%09%09%09%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%0A%2F%2F%20Connexion%20au%20Serveur%20MySQL%0A%24Connect%20%3D%20%40mysql_connect(HOST%2C%20USER%2C%20PASSWORD)%20or%20die(%22Impossible%20de%20se%20connecter%20%C3%A0%20MySQL%3A%3Cbr%3E%22%20.%20mysql_error()%20.%20%22%3Cbr%3E%22%20.%20mysql_errno())%3B%0A%2F%2F%20Select%20de%20la%20Base%20de%20donn%C3%A9e%20MySQL%0A%24Db%20%3D%20%40mysql_select_db(DATABASE%2C%20%24Connect)%20or%20die(%22Impossible%20de%20choisir%20la%20Base%20de%20Donn%C3%A9e%3A%3Cbr%3E%22%20.%20mysql_error().%20%22%3Cbr%3E%22%20.%20mysql_errno())%3B%0A%2F%2F%20Ex%C3%A9cution%20de%20la%20Requ%C3%AAte%20POST%20ou%20GET%0A%24result%20%3D%20%40mysql_query(%24sql%2C%24Connect)%20or%20die(%22Impossible%20d%5C’ex%C3%A9cuter%20la%20requ%C3%AAte%3A%3Cbr%3E%22%20.%20mysql_error().%20%22%3Cbr%3E%22%20.%20mysql_errno())%3B%20%20%20%20%0A%24file_ending%20%3D%20%22xls%22%3B%0A%2F%2FInformation%20de%20l%5C’ent%C3%AAt%20de%20notre%20navigateur%0Aheader(%22Content-Type%3A%20application%2Fxls%22)%3B%20%20%20%20%0Aheader(%22Content-Disposition%3A%20attachment%3B%20filename%3DExportation%22.date(‘d-m-Y’).%22.xls%22)%3B%20%20%0Aheader(%22Pragma%3A%20no-cache%22)%3B%20%0Aheader(%22Expires%3A%200%22)%3B%0A%2F*******Debut%20du%20formatage%20d’excel*******%2F%20%0A%2F%2F%20Definition%20du%20s%C3%A9parateur%20de%20colonne%20dans%20excel%0A%24sep%20%3D%20%22%5Ct%22%3B%20%0A%2F%2F%20D%C3%A9but%20d’impression%20des%20noms%20des%20colonnes%20MySQL%0Afor%20(%24i%20%3D%200%3B%20%24i%20%3C%20mysql_num_fields(%24result)%3B%20%24i%2B%2B)%20%7B%0Aecho%20mysql_field_name(%24result%2C%24i)%20.%20%22%5Ct%22%3B%0A%7D%0Aprint(%22%5Cn%22)%3B%20%20%20%20%0A%2F%2FFin%20d’impression%20de%20colonnes%0A%2F%2F%20Debut%20de%20la%20boucle%0A%20%20%20%20while(%24row%20%3D%20mysql_fetch_row(%24result))%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%24schema_insert%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20for(%24j%3D0%3B%20%24j%3Cmysql_num_fields(%24result)%3B%24j%2B%2B)%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if(!isset(%24row%5B%24j%5D))%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24schema_insert%20.%3D%20%22NULL%22.%24sep%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20elseif%20(%24row%5B%24j%5D%20!%3D%20%22%22)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24schema_insert%20.%3D%20%22%24row%5B%24j%5D%22.%24sep%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20else%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24schema_insert%20.%3D%20%22%22.%24sep%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%24schema_insert%20%3D%20str_replace(%24sep.%22%24%22%2C%20%22%22%2C%20%24schema_insert)%3B%0A%20%20%20%20%20%20%20%20%24schema_insert%20%3D%20preg_replace(%22%2F%5Cr%5Cn%7C%5Cn%5Cr%7C%5Cn%7C%5Cr%2F%22%2C%20%22%20%22%2C%20%24schema_insert)%3B%0A%20%20%20%20%20%20%20%20%24schema_insert%20.%3D%20%22%5Ct%22%3B%0A%20%20%20%20%20%20%20%20print(trim(%24schema_insert))%3B%0A%20%20%20%20%20%20%20%20print%20%22%5Cn%22%3B%0A%20%20%20%20%7D%20%20%20%0A%0A%3F%3E%0A%0A » message= »Exporter le Résultat MySQL en Excel avec PHP » highlight= » » provider= »manual »/]

3 réflexions au sujet de « Comment exporter le résultat d’une requête MySQL en Excel avec PHP »

  1. papy

    Bonjour Pacôme,

    J’ai trouvé votre feuille php en cherchant justement comment faire cet export pour une requête sur certaines données de mon Forum.

    Il tourne avec une base et un serveur de données phpmyadmin en  PHP 7. Il m’a donc fallu adapter votre code pour Mysqli, ce que j’ai fait sans trop de difficultés à un détail : je n’arrive pas à afficher le nom des tables en ligne. La boucle les affiche en colonne.

    mysql_field_name étant obsolète sur php7, je l’ai remplacé par mysqli_fetch_field_direct

    [pastacode lang= »php » manual= »for%20(%24i%20%3D%200%3B%20%24i%20%3C%20mysqli_num_fields(%24result)%3B%20%24i%2B%2B)%0A%20%20%20%20%20%20%20%20%7B%0A%09%24fieldinfo%20%3D%20mysqli_fetch_field_direct(%24result%2C%24i)%3B%20%20%20%0A%09%20%20%20%20printf(%22%25s%5Cn%22%2C%24fieldinfo-%3Ename).%20%22%5Ct%22%20%3B%0A%09%7D » message= » » highlight= » » provider= »manual »/]

     

    Vous auriez une solution à me proposer ?

    Papy

  2. papy

    Quoi de mieux que l’auto-support 😉

    A force d’essayer, j’ai trouvé la solution et la voici donc.

    [pastacode lang= »php » manual= »%09%09for%20(%24i%20%3D%200%3B%20%24i%20%3C%20mysqli_num_fields(%24result)%3B%20%24i%2B%2B)%0A%09%09%7B%0A%09%09%24fieldinfo%20%3D%20mysqli_fetch_field_direct(%24result%2C%24i)%3B%20%20%20%0A%09%20%20%20%20%24name%20%3D%20%24fieldinfo-%3Ename%3B%0A%09%09echo%20%24name%20.%20%22%5Ct%22%3B%0A%09%09%7D%0A%09%09print%20%22%5Cn%22%3B%0A%09%09″ message= » » highlight= » » provider= »manual »/]

    Merci encore pour ce code bien utile.

Laisser un commentaire