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.