Exporter une table MySQL dans un fichier Excel grâce

Transcription

Exporter une table MySQL dans un fichier Excel grâce
Exporter une table MySQL dans un fichier
Excel grâce à Php
Script permettant d’exporter une table MySQL dans un fichier Excel grâce à Php.
Vous avez toute une base de donnée contenant vos clients, vos produits vendus, vos comptes
etc… et vous souhaitez l’exporter sur un .csv ou .xls, ce script est fait pour vous !
Je n’expliquerais pas tout, mais sachez qu’il fonctionne parfaitement !
Vous avez besoin de 3 fichiers en tout.
Le config.php
Il contient vos informations de connexion à votre base de donnée
1 <?php
2
3 $db=array(); // on fait un tableau $db
4
5 // on indique les différentes valeurs du tableau
6
7 $db['user']='xxxxxxxxxxxxxx';
8 $db['host']='xxxxxxxxxxxx';
9 $db['pass']= 'xxxxxxxx';
10$db['base']='xxxxxxxxxxxxxx';
11
12?>
Le data_fn.php
Qui est la fonction de connexion à la base de donnée.
1 <?php
2 /*
3 * fonction pour se connecter a la base de donnée
4
5 *@param $db(array) de config.php
6
7 *@return $link
8 */
9 // On dis que la variable $db va prendre la valeur du tableau de $db ecris dans config.php
10function database_connect($db) {
11 $link=mysql_connect($db['host'],$db['user'],$db['pass'])or die ("connexion impossible : erreur ! ");
12 mysql_select_db($db['base']);
13 mysql_query('SET NAMES UTF8');
14 return $link; // return va juste dire : true si ca a marché, ou ce qu'il y a marqué dans 'or die' si ca a foiré
15 }
16
17/**
18 * fonction de deconnection de base de donnee
19 * @param $link lien de base
20 * @return rien
21 */
22function database_disconnect($link){
23 mysql_close($link);
24}
25?>
Et le script en lui même, csv.php
Qui va faire toute la manip !
1 <?php
2 header("Content-type: application/vnd.ms-excel");
3 header("Content-disposition: csv" . date("Y-m-d") . ".csv");
4 header( "Content-disposition: filename=NOMQUE VOUS SOUHAITEZ DONNER.csv ou .xls");</pre>
5 include "config.php"; // gere les login et pass de la BDD
6 include "data_fn.php";
7
8 $link=database_connect($db); // on se connecte à la base de donnée grâce à data_fn.php
9
10$table = 'users'; /* Remplacez par le nom de votre table à exporter ! */
11$file = 'export';
12$result = mysql_query("SHOW COLUMNS FROM ".$table."");
13$i = 0;
14if (mysql_num_rows($result) > 0)
15{
16while ($row = mysql_fetch_assoc($result))
17{
18$csv_output .= $row['Field']."; ";
19$i++;
20}
21}
22
23$csv_output .= "\n";
24
25$values = mysql_query("SELECT * FROM ".$table."");
26while ($rowr = mysql_fetch_row($values))
27{
28for ($j=0;$j<$i;$j++)
29{
30$csv_output .= $rowr[$j]."; ";
31}
32$csv_output .= "\n";
33}
34
35$filename = $file."_".date("Y-m-d_H-i",time());
36
37print $csv_output;
38exit;
39?>
Pour « activer » ce script, faites un simple lien menant vers la page.php dans laquelle vous
l’avez inséré.
N’oubliez pas de changer:
1header( "Content-disposition: filename=NOMQUE VOUS SOUHAITEZ DONNER.csv ou .xls");
Une fois votre fichier téléchargé, si, comme moi, vous utilisez OpenOffice (j’explique pour
Office un peu plus bas, ne vous inquiétez pas), après avoir double cliqué sur le fichier une
fenêtre de ce style devrait s’ouvrir:
Export d’une table SQL avec Php sous excel
Comme vous pouvez le voir, votre fichier Excel sera tout moche !
C’est pourquoi vous devrez décocher Tabulation et cocher Point-virgule:
Export d’une table SQL avec Php sous excel
Vos colonnes s’affichent directement beaucoup mieux !
Une petite explication ?
Si vous regardez ces deux lignes de code :
1$csv_output .= $row['Field']."; ";
1$csv_output .= $rowr[$j]."; ";
Vous remarquerez l’avant dernier point virgule. C’est lui qui fait office de séparateur. Par
défaut je mettais une virgule jusqu’au jour ou j’en ai eu des présentes DANS certains champs
de ma table, ce qui a eu pour effet de décaler toutes mes colonnes.
En soit, mettez le séparateur que vous souhaitez mais assurez vous qu’il n’est pas présent dans
aucun de vos champs !
Pour les personnes utilisant office, si vous double cliquez directement sur votre fichier,
(parfois)tous vos champs seront dans la même colonne. Pour pallier à cela, lancez d’abord
Office puis faites « Ouvrir un fichier ». Vous devriez voir apparaître le même genre de fenêtre
qu’au dessus. Il ne vous reste plus cas choisir le bon séparateur.

Documents pareils