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.

<?php
// Information de connexion à notre base de données
define('HOST','localhost'); // adresse du serveur MySQL
define('USER','root'); // Utilisateur de notre Serveur MySQL
define('PASSWORD',''); //  Mot de passe de l'utilisation MySQL
define('DATABASE','geschools'); // Nom de la Base de données

// Ma requête SQL (Vous pouvez modifier la requete selon la structure de votre table
$sql='SELECT nom,prenom,sexe,adresse,ville,contact FROM clients';

/////////////////////////// NE MODIFIER PAS CE QUI SUIT ////////////////////////
/////////////////////////////							///////////////////////
// Connexion au Serveur MySQL
$Connect = @mysql_connect(HOST, USER, PASSWORD) or die("Impossible de se connecter à MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());
// Select de la Base de donnée MySQL
$Db = @mysql_select_db(DATABASE, $Connect) or die("Impossible de choisir la Base de Donnée:<br>" . mysql_error(). "<br>" . mysql_errno());
// Exécution de la Requête POST ou GET
$result = @mysql_query($sql,$Connect) or die("Impossible d\'exécuter la requête:<br>" . mysql_error(). "<br>" . mysql_errno());    
$file_ending = "xls";
//Information de l\'entêt de notre navigateur
header("Content-Type: application/xls");    
header("Content-Disposition: attachment; filename=Exportation".date('d-m-Y').".xls");  
header("Pragma: no-cache"); 
header("Expires: 0");
/*******Debut du formatage d'excel*******/ 
// Definition du séparateur de colonne dans excel
$sep = "\t"; 
// Début d'impression des noms des colonnes MySQL
for ($i = 0; $i < mysql_num_fields($result); $i++) {
echo mysql_field_name($result,$i) . "\t";
}
print("\n");    
//Fin d'impression de colonnes
// Debut de la boucle
    while($row = mysql_fetch_row($result))
    {
        $schema_insert = "";
        for($j=0; $j<mysql_num_fields($result);$j++)
        {
            if(!isset($row[$j]))
                $schema_insert .= "NULL".$sep;
            elseif ($row[$j] != "")
                $schema_insert .= "$row[$j]".$sep;
            else
                $schema_insert .= "".$sep;
        }
        $schema_insert = str_replace($sep."$", "", $schema_insert);
        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);
        $schema_insert .= "\t";
        print(trim($schema_insert));
        print "\n";
    }   

?>
Exporter le Résultat MySQL en Excel avec PHP

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

    for ($i = 0; $i < mysqli_num_fields($result); $i++)
            {
    	$fieldinfo = mysqli_fetch_field_direct($result,$i);   
    	    printf("%s\n",$fieldinfo->name). "\t" ;
    	}

     

    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.

    		for ($i = 0; $i < mysqli_num_fields($result); $i++)
    		{
    		$fieldinfo = mysqli_fetch_field_direct($result,$i);   
    	    $name = $fieldinfo->name;
    		echo $name . "\t";
    		}
    		print "\n";
    		

    Merci encore pour ce code bien utile.

Laisser un commentaire