Exporter la table MySQL vers Excel en PHP

Subodh Poudel 30 mars 2022
Exporter la table MySQL vers Excel en PHP

Nous verrons comment exporter la table de MySQL vers Excel en utilisant PHP dans cet article.

Exporter la table MySQL vers Excel en PHP

Nous pouvons utiliser les en-têtes Excel de PHP pour importer la table de MySQL dans un fichier Excel. Nous devrions spécifier l’en-tête Content-type comme application/xls pour inclure l’en-tête Excel. Pour télécharger le fichier Excel, nous devons utiliser l’en-tête Content-Disposition comme pièce jointe et fournir le nom du fichier avec l’option filename. Nous pouvons interroger la table requise en PHP et enregistrer le résultat dans une variable. La variable doit être un tableau HTML contenant les résultats interrogés. Ensuite, nous pouvons envoyer les informations d’en-tête au navigateur à l’aide de la fonction header() et sortir la variable contenant le tableau à l’aide de la fonction echo. Nous décomposerons les étapes pour exporter une table MySQL dans un fichier Excel.

Par exemple, nous avons une table nommée users dans notre base de données.

+----+-----------+----------+------------+
| id | firstname | lastname | dob        |
+----+-----------+----------+------------+
|  1 | james     | gunn     | 1998-08-13 |
|  2 | bille     | joe      | 1970-02-15 |
+----+-----------+----------+------------+

Maintenant, nous allons exporter le tableau dans un fichier Excel. Dans un premier temps, créons un bouton pour exporter le tableau vers Excel.

<form method="post" action="index.php">
<input type="submit" name="submit" value="Export" />
</form>

Nous avons créé un formulaire qui soumet les données au fichier index.php lorsque le bouton est cliqué. L’attribut name de notre bouton est submit. Nous utiliserons cette valeur plus tard pour vérifier si les données ont été soumises dans le formulaire.

Dans un premier temps, nous devons établir une connexion à la base de données. Pour cela, utilisez la fonction mysqli_connect() et fournissez les détails de votre serveur. Enregistrez la connexion dans la variable $connect.

$connect = mysqli_connect("hostname", "username", "password", "db_name");

Notez que les valeurs écrites comme paramètres de la fonction ci-dessus ne sont que des espaces réservés. Vous devez le remplir avec les informations de votre serveur.

Ensuite, nous pouvons utiliser la fonction isset() pour vérifier si le formulaire a été soumis. Comme l’attribut method est post dans le formulaire que nous avons créé, nous devons utiliser le tableau $_POST pour vérifier. Nous utilisons la valeur de l’attribut name, submit, comme index du tableau $_POST à l’intérieur de la fonction isset().

Après cela, écrivez la requête SQL et enregistrez la sortie dans la variable $res. La requête pour sélectionner toutes les lignes de la table users est ci-dessous.

SELECT * FROM users;

Ensuite, lancez la requête à l’aide de la fonction mysqli_query(). La variable de connexion à la base de données est le premier paramètre de la fonction et la requête MySQL est le deuxième paramètre. Nous pouvons vérifier le résultat de la requête en utilisant la fonction mysqli_num_rows(). La fonction renvoie le nombre de lignes de la base de données. Le nombre de lignes doit être supérieur à zéro pour exécuter d’autres opérations. Écrivez la condition if pour évaluer la condition.

Dans la condition if, créez une variable $export et enregistrez-y le tableau HTML. Créez les en-têtes de tableau avec la balise th. Créez les en-têtes avec le même nom que les noms de colonne dans le tableau. Après cela, récupérez les données de la base de données à l’aide de la fonction mysqli_fetch_array(). Affectez la fonction à une variable $row.

Ensuite, utilisez la variable $row pour extraire les données en utilisant le nom de la colonne comme index. Enveloppez la variable à l’intérieur de la balise td afin que les données soient renseignées dans le tableau. Un exemple est illustré ci-dessous.

<td>'.$row["id"].'</td>

Ensuite, fermez toutes les balises du tableau. La variable $export contient la table sous forme de chaîne. Ensuite, écrivez la fonction header() pour désigner le contenu envoyé au navigateur sous forme de fichier Excel. Encore une fois, utilisez la fonction pour télécharger le fichier Excel. L’exemple est illustré ci-dessous.

 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=info.xls');

Enfin, imprimez la variable $export à l’aide de la fonction echo. Notez que toute la partie PHP se fait dans le fichier index.php.

L’exemple de code final est présenté ci-dessous.

Exemple de code :

$connect = mysqli_connect("hostname", "username", "password", "db_name");
if(isset($_POST["submit"]))
{
 $query = "SELECT * FROM users";
 $res = mysqli_query($connect, $query);
 if(mysqli_num_rows($res) > 0)
 {
 $export .= '
 <table> 
 <tr> 
 <th> id </th>
 <th>firstname</th> 
 <th>lastname</th> 
 <th>dob</th> 
 
 </tr>
 ';
 while($row = mysqli_fetch_array($res))
 {
 $export .= '
 <tr>
 <td>'.$row["id"].'</td> 
 <td>'.$row["firstname"].'</td> 
 <td>'.$row["lastname"].'</td> 
 <td>'.$row["dob"].'</td> 
 
 
 </tr>
 ';
 }
 $export .= '</table>';
 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=info.xls');
 echo $export;
 }
}

Lorsque nous cliquons sur le bouton Exporter, nous pourrons télécharger le fichier Excel, qui contient le contenu de la base de données. De cette façon, nous pouvons exporter la table MySQL dans un fichier Excel en PHP.

Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

Article connexe - PHP MySQL