PcKULT.NET - La référence en informatique

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • black color

PcKULT.NET - Recrute

PcKULT.NET est présentement à la recherche de passionnés d'informatique qui veulent se greffer à l'équipe de PcKULT.NET. Si l'aventure vous intéresse, veuillez communiquer avec nous.

webmaster@pckult.net


Exporter une table MySQL vers un fichier Excel sous PHP

E-mail Imprimer PDF
Exporter une table MySQL vers un fichier Excel sous PHP est simple et rapide à mettre en oeuvre. Afin de réussir à bien ce tutoriel, il vous suffit de suivre les étapes qui suivent. Ce tutoriel n'a besoin que de 2 choses :

  1. le fichier .php (dans l'exemple export_excel.php)
  2. une table MySQL (dans l'exemple la table tutoriel incluant 2 champs : id et nom)

export_mysql_to_excel_



CODE :

<?php
    // Connection à la base de donnée.
    mysql_connect("localhost","","");
    mysql_select_db("tutorial");

    // Sélection des données.
    $result=mysql_query("select * from name_list order by id asc");

    // Functions d'exportation vers Excell.
    function xlsBOF() {
        echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
        return;
    }
    
    function xlsEOF() {
        echo pack("ss", 0x0A, 0x00);
        return;
    }
    
    function xlsWriteNumber($Row, $Col, $Value) {
        echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
        echo pack("d", $Value);
        return;
    }
    
    function xlsWriteLabel($Row, $Col, $Value ) {
        $L = strlen($Value);
        echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
        echo $Value;
        return;
    }
    
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/force-download");
    header("Content-Type: application/octet-stream");
    header("Content-Type: application/download");;
    header("Content-Disposition: attachment;filename=orderlist.xls ");
    header("Content-Transfer-Encoding: binary ");

    xlsBOF();

    // Insertion de la ligne 1 : Titre de la feuille.
    xlsWriteLabel(0,0,"List of car company.");

    // Insertion des entêtes de colonnes.
    xlsWriteLabel(2,0,"No.");
    xlsWriteLabel(2,1,"Company");

    $xlsRow = 3;

    // Insertion des données dans chaque ligne
    while($row=mysql_fetch_array($result)){
        xlsWriteNumber($xlsRow,0,$row['id']);
        xlsWriteLabel($xlsRow,1,$row['name']);
        $xlsRow++;
    }
    xlsEOF();
    exit();

?>



Ajouter cette page à votre Digg-Like préféré
Reddit! Del.icio.us! JoomlaVote! Google! Live! Facebook! Technorati! StumbleUpon! Spurl! Furl! Blogmarks! Yahoo! FeedMeLinks!
Commentaires (14)Add Comment
Colorier les cellules avec l'export
Ecrit par MacGivrer, janvier 09, 2008
Bonsoir à tous,
j'ai très bien réussi à configurer l'export pour ma bdd. Merci pour ce petit code bien sympa.
Mais ma question est la suivante: Comment à l'aide de ce code peut-on colorier telle ou telle cellule? Que faut-il rajouter?
D'avance merci.
la suite du message
Ecrit par anthony bourguignon, décembre 09, 2007
le code

pb avec l'export
Ecrit par anthony bourguignon, décembre 09, 2007
Bonjour

tout d'abord voici mon code:

Psttt : Jai oublié
Ecrit par Bac, novembre 10, 2007
Pardon .. j'ai oublié:
Je travaille sous CMS joomla!
merci
Bactamtam.vn
Excel vers Hot Property et vice versa.
Ecrit par Bac, novembre 10, 2007
Hi
Dans le cadre des composants spécialement étudié pour le projet bactamtam il manque un hack sur mon composant susceptible d'impoerter aussi une image .. et donc de l'exporter.
Si pckult a une idéeeeee je suis vraiment preneur !
Thanks
probléme d'export avec trops d'entree
Ecrit par dav, octobre 01, 2007
Bonjour,
J'ai utilisé ce script mais quand je veus exporté plus de 1000 entrée le fichier n'est plus lu par excel. y a t il a faire quelquechose?
sachant qu il marche tres bien en dessous de 1000 entrees.
voici mon code :

re
Ecrit par Xavier.T, septembre 10, 2007
voila,
je viens de finir mon code avec la boucle pour inclure les données extraites de ma table et je me retrouve avec le meme pb que précédement !!!

voila la fin de mon code :


$xlsRow = 1;

// Insertion des données dans chaque ligne
while($row = mysql_fetch_assoc($res)){
// infos user
mysql_select_db($database_XXXX, $XXXX);
$query2 = "SELECT * from user where user_id = '".$row['user_id']."'";
$res2 = mysql_query($query2, $XXXX) or die(mysql_error());
$row2 = mysql_fetch_assoc($res2);
// infos camping
mysql_select_db($database_XXXX, $XXXX);
$query3 = "SELECT nom_camp from camping where id_camp = '".$row['rap_camp']."'";
$res3 = mysql_query($query3, $XXXX) or die(mysql_error());
$row3 = mysql_fetch_assoc($res3);

// data
switch($row['rap_lg']) {
case "fr": xlsWriteLabel($xlsRow,0,"Français");break;
case "de": xlsWriteLabel($xlsRow,0,"Allemand");break;
case "es": xlsWriteLabel($xlsRow,0,"Espagnol");break;
case "nl": xlsWriteLabel($xlsRow,0,"Néerlandais");break;
case "da": xlsWriteLabel($xlsRow,0,"Danois");break;
case "en": xlsWriteLabel($xlsRow,0,"Anglais");break;
case "it": xlsWriteLabel($xlsRow,0,"Italien");
}
xlsWriteLabel($xlsRow,1,$row2['user_nom']);
xlsWriteLabel($xlsRow,2,$row2['user_prenom']);
xlsWriteLabel($xlsRow,3,$row2['user_adresse']);
xlsWriteLabel($xlsRow,4,$row2['user_ville']);
xlsWriteLabel($xlsRow,5,$row2['user_cp']);
xlsWriteLabel($xlsRow,6,$row2['pays']);
xlsWriteLabel($xlsRow,7,$row2['user_mail']);
xlsWriteLabel($xlsRow,8,$row2['user_tel']);
if($row2['user_gc'] == 0) {
xlsWriteLabel($xlsRow,9,"non"); }
else {
xlsWriteLabel($xlsRow,9,"oui"); }
switch($row2['user_age']) {
case "30" : xlsWriteLabel($xlsRow,10,"- de 30 ans");break;
case "3039" : xlsWriteLabel($xlsRow,10,"entre 30 et 39 ans");break;
case "4049" : xlsWriteLabel($xlsRow,10,"entre 40 et 49 ans");break;
case "5059" : xlsWriteLabel($xlsRow,10,"entre 50 et 59 ans");break;
case "6074" : xlsWriteLabel($xlsRow,10,"entre 60 et 74 ans");break;
case "75" : xlsWriteLabel($xlsRow,10,"75 ans et ");break;
}
xlsWriteLabel($xlsRow,11,$row2['user_enf']);
xlsWriteLabel($xlsRow,12,$row3['nom_camp']);
xlsWriteLabel($xlsRow,13,$row['rap_typ']);
xlsWriteLabel($xlsRow,14,$row['rap_du']);
xlsWriteLabel($xlsRow,15,$row['rap_au']);
xlsWriteLabel($xlsRow,16,$row['rap_accueil']);
xlsWriteLabel($xlsRow,17,$row['rap_prop']);
xlsWriteLabel($xlsRow,18,$row['rap_serv']);
xlsWriteLabel($xlsRow,19,$row['rap_imp']);
xlsWriteLabel($xlsRow,20,$row['rap_loc']);
xlsWriteLabel($xlsRow,21,stripslashes($row['rap_txt'])) ;
$data .= "
";

// archivage des donnees extraites
mysql_select_db($database_kawan, $kawan);
$query4 = "update rapport set rap_extract = '1' where rap_id = '".$row['rap_id']."'";
$res4 = mysql_query($query4, $kawan) or die(mysql_error());

$xlsRow ;
}
xlsEOF();
exit();
heuuuuu petit pb
Ecrit par Xavier.T, septembre 10, 2007
bonjour,
je sais que j'arrives un peu tard mais voila mon pb
j'ai tout bien fait comme c'est dit dans le tuto et, à mon grand étonnement, je me retrouve avec des entetes bizare !
en fait toutes mes entete de colonnes se collent dans la premiere celule espacées par des carrés !
je tourne en rond et y perd tous mes pauvres cheveux !lol
mais que ce passe t'il donc ???
merci de vos réponses.

voici le depart de mon script (je n'ai pas encore fait la boucle pour les lignes suivantes) :

//depart session
session_start();

//securisation page
if(!isset($_SESSION['controle']) OR $_SESSION['controle'] != "ok") {
header("Location:index.php");
}

//requis
require_once('../Connections/XXXX.php');
require_once('../Connections/fonctions_php.php');

// extraction
mysql_select_db($database_XXXX, $XXXX);
$query = "SELECT * from rapport";
if($_POST['ext'] != 2) {
$query .= " where rap_extract = ".$_POST['ext']; }
$query .= " order by rap_lg";
$res = mysql_query($query, $XXXX) or die(mysql_error());
$row = mysql_fetch_assoc($res);

// Functions d'exportation vers Excell.
function xlsBOF() {
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}

function xlsEOF() {
echo pack("ss", 0x0A, 0x00);
return;
}

function xlsWriteNumber($Row, $Col, $Value) {
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}

function xlsWriteLabel($Row, $Col, $Value ) {
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=rapport.xls ");
header("Content-Transfer-Encoding: binary ");

xlsBOF();

// Insertion des entêtes de colonnes.
xlsWriteLabel(0,0,"Langue");
xlsWriteLabel(0,1,"Nom");
xlsWriteLabel(0,2,"Prenom");
xlsWriteLabel(0,3,"Adresse");
xlsWriteLabel(0,4,"Ville");
xlsWriteLabel(0,5,"Code postal");
xlsWriteLabel(0,6,"Pays");
xlsWriteLabel(0,7,"Email");
xlsWriteLabel(0,8,"Telephone");
xlsWriteLabel(0,9,"Membre Gold Card");
xlsWriteLabel(0,10,"Age");
xlsWriteLabel(0,11,"Enfants");
xlsWriteLabel(0,12,"Nom du camping");
xlsWriteLabel(0,13,"Sejour en");
xlsWriteLabel(0,14,"Sejour du");
xlsWriteLabel(0,15,"Sejour au");
xlsWriteLabel(0,16,"Accueil");
xlsWriteLabel(0,17,"Proprete");
xlsWriteLabel(0,18,"Services");
xlsWriteLabel(0,19,"Impression generale");
xlsWriteLabel(0,20,"Emplacement/Locatif");
xlsWriteLabel(0,21,"commentaires");


/*$xlsRow = 3;

// Insertion des données dans chaque ligne
while($row=mysql_fetch_array($result)){
xlsWriteNumber($xlsRow,0,$row['id']);
xlsWriteLabel($xlsRow,1,$row['name']);
$xlsRow ;
}*/
xlsEOF();
exit();
cela marche
Ecrit par sarr ousmane etudiant en miage, juin 19, 2007
ok cela mrche bien sur mes comment de tel sorte
que ces données extraitent viennent avec un graphique automatiquement.
...
Ecrit par Dave Lizotte, mars 22, 2007
Bonjour pytnemo, selon mes connaissances, il est impossible à mon avis d'extraire les images de ta base de données MySQL vers Excel. Mais je vais tout de même jeté un coup d'oeil!
image
Ecrit par pytnemo, mars 22, 2007
bonjour
est il possible d'exporter des données binaires (images de la base de données) vers excel ?
...
Ecrit par Dave Lizotte, janvier 31, 2007
Par la suite je m'appercois que tu fais des :

xlsWriteLabel($xlsRow,1,$row['prenom']);
xlsWriteNumber($xlsRow,2,$row['adresse1']);

... est-ce que le prenom est un label (String) - OUI Parfait ...
... est-ce que le adresse1 est un Number (Integer) - NON Parfait ... mais tu as écrit xlsWriteNumber ... ceci est une cause de ton problème ... vérifie quel est le type de champs NUMBER ou STRING pour chaque champs car la majorité sont incorrecte!
...
Ecrit par Dave Lizotte, janvier 31, 2007
Je ne vois pas le problème, il faudrais que tu tests si il y a des valeurs dans les champs en ajoutant echo $row['reponse1']; et ce pour chaque row afin de t'assurrer que les données sont là ! Ensuite, je te conseil de vérifier le nom de tes colonnes, je ne suis pas certain si la casse (Min/Maj) est importante, ce serais a vérifier avant tout. Et est-ce que tes enyêtes de colonne se sont bien écris dans ton fichier Excel ?
pb d'affichage
Ecrit par Jack, janvier 31, 2007
J'ai suivi cet exemple.
Export des données d'une seule table "reponses".
Ca marche sauf qu'il n'affiche que les champs prénom (prenom) et code postal (cp) et pas les autres.
Why ?
Merci de votre aide.

include "connect.php";
// Sélection des données.
$result=mysql_query("select * from reponses");
// Functions d'exportation vers Excel.
function xlsBOF()
{
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
function xlsEOF()
{
echo pack("ss", 0x0A, 0x00);
return;
}
function xlsWriteNumber($Row, $Col, $Value)
{
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);
echo pack("d", $Value);
return;
}
function xlsWriteLabel($Row, $Col, $Value )
{
$L = strlen($Value);
echo pack("ssssss", 0x204, 8 $L, $Row, $Col, 0x0, $L);
echo $Value;
return;
}
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");;
header("Content-Disposition: attachment;filename=prospects.xls ");
header("Content-Transfer-Encoding: binary ");
xlsBOF();
// Insertion de la ligne 1 : Titre de la feuille.
xlsWriteLabel(0,0,"Prospects");
// Insertion des entêtes de colonnes.
xlsWriteLabel(2,0,"Nom");
xlsWriteLabel(2,1,"Prénom");
xlsWriteLabel(2,2,"Adresse1");
xlsWriteLabel(2,3,"Adresse2");
xlsWriteLabel(2,4,"cp");
xlsWriteLabel(2,5,"ville");
xlsWriteLabel(2,6,"pays");
xlsWriteLabel(2,7,"email");
xlsWriteLabel(2,8,"reponse1");
xlsWriteLabel(2,9,"reponse2.1");
xlsWriteLabel(2,10,"reponse2.2");
xlsWriteLabel(2,11,"reponse2.3");
xlsWriteLabel(2,12,"reponse2.4");
xlsWriteLabel(2,13,"reponse2.5");
xlsWriteLabel(2,14,"reponse3");
xlsWriteLabel(2,15,"reponse4.1");
xlsWriteLabel(2,16,"reponse4.2");
xlsWriteLabel(2,17,"reponse4.3");
xlsWriteLabel(2,18,"reponse4.4");
xlsWriteLabel(2,19,"reponse5.1");
xlsWriteLabel(2,20,"reponse5.2");
xlsWriteLabel(2,21,"reponse5.3");
xlsWriteLabel(2,22,"reponse5.4");
xlsWriteLabel(2,23,"reponse5.5");
xlsWriteLabel(2,24,"reponse5.6");
xlsWriteLabel(2,25,"reponse6");
$xlsRow = 3;
// Insertion des données dans chaque ligne
while($row=mysql_fetch_array($result)){
xlsWriteNumber($xlsRow,0,$row['nom']);
xlsWriteLabel($xlsRow,1,$row['prenom']);
xlsWriteNumber($xlsRow,2,$row['adresse1']);
xlsWriteNumber($xlsRow,3,$row['adresse2']);
xlsWriteNumber($xlsRow,4,$row['cp']);
xlsWriteNumber($xlsRow,5,$row['ville']);
xlsWriteNumber($xlsRow,6,$row['pays']);
xlsWriteNumber($xlsRow,7,$row['email']);
xlsWriteNumber($xlsRow,8,$row['reponse1']);
xlsWriteNumber($xlsRow,9,$row['reponse21']);
xlsWriteNumber($xlsRow,10,$row['reponse22']);
xlsWriteNumber($xlsRow,11,$row['reponse23']);
xlsWriteNumber($xlsRow,12,$row['reponse24']);
xlsWriteNumber($xlsRow,13,$row['reponse25']);
xlsWriteNumber($xlsRow,14,$row['reponse3']);
xlsWriteNumber($xlsRow,15,$row['reponse41']);
xlsWriteNumber($xlsRow,16,$row['reponse42']);
xlsWriteNumber($xlsRow,17,$row['reponse43']);
xlsWriteNumber($xlsRow,18,$row['reponse44']);
xlsWriteNumber($xlsRow,19,$row['reponse51']);
xlsWriteNumber($xlsRow,20,$row['reponse52']);
xlsWriteNumber($xlsRow,21,$row['reponse53']);
xlsWriteNumber($xlsRow,22,$row['reponse54']);
xlsWriteNumber($xlsRow,23,$row['reponse55']);
xlsWriteNumber($xlsRow,24,$row['reponse56']);
xlsWriteNumber($xlsRow,25,$row['reponse6']);
$xlsRow ;
}
xlsEOF();
exit();
?>

Ecrivez un commentaire
quote
bold
italicize
underline
strike
url
image
quote
quote
smile
wink
laugh
grin
angry
sad
shocked
cool
tongue
kiss
cry
Réduire l'éditeur | Agrandir l'éditeur

busy
Mis à jour ( Samedi, 13 Janvier 2007 20:01 )  

Sondage

Votre fournisseur Internet
 

Publicités