Langage informatiquePHP

Exporter vers Excel (*.xls) avec PHP/MySql

Objectif :

Exporter des données déjà enregistrées dans une table de ma BDD MySql vers un fichier Excel en cliquant sur un bouton dans une page HTML.

Le tout en PHP.

Petit résumé en image :

J’ai une table avec une liste de clients. Je souhaite récupérer ces données sous Excel avec PHP.
J’intègre un bouton dans ma page. Je clique sur ce bouton pour récupérer mon fichier au format *.xls
J’enregistre mon fichier sur mon disque dur.

 

Aperçu de mon fichier Excel… Bien comme il faut 😉

 

Mon code

Le code pour le bouton.

J’appelle un fichier csv*.php dans lequel je vais mettre mon script pour générer mon fichier Excel..

<a href="csv.php">
<button type="button" class="btn btn-info">Exporter xls</button></a>

Euh oui, c’est du Bootstrap 🙂

Le script pour générer mon fichier Excel

<?php
include ('../inc/inc_connexion.php');
        
$select = $pdo->prepare('
SELECT *
FROM clients_gites
');

$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();

$newReservations = $select->fetchAll();

$excel = "";
$excel .=  "Id\tNom\tPrénom\tAdresse\tCode postal\tVille\tPays\tMail\tTéléphone\n";

foreach($newReservations as $row) {
    $excel .= "$row[id_client]\t$row[nom_client]\t$row[prenom_client]\t$row[adresse_client]\t$row[cp_client]\t$row[ville_client]\t$row[pays_client]\t$row[mail_client]\t$row[tel_client]\n";
}

header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=liste-clients.xls");

print $excel;
exit;

?>

 

Quelques explications :

  • Je vais chercher mes paramètres de connexion (ici en PDO)
  • Je prépare ma requête vers ma table et je l’exécute. (ici, je récupère tous les champs).
  • Je constitue ma première ligne de mon tableau Excel.
  • J’utilise la fonction PHP header.
    • header(« Content-type: application/vnd.ms-excel »); Je veux un fichier Excel.
    • header(« Content-disposition: attachment; filename=liste-clients.xls »); Qui sera appelé liste-client.xls