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

<?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();?>

Ecrit par anthony bourguignon, décembre 09, 2007
tout d'abord voici mon code:
Ecrit par Bac, novembre 10, 2007
Je travaille sous CMS joomla!
merci
Bactamtam.vn
Ecrit par Bac, novembre 10, 2007
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
Ecrit par dav, octobre 01, 2007
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 :
Ecrit par Xavier.T, septembre 10, 2007
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();
Ecrit par Xavier.T, septembre 10, 2007
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();
Ecrit par sarr ousmane etudiant en miage, juin 19, 2007
que ces données extraitent viennent avec un graphique automatiquement.
Ecrit par pytnemo, mars 22, 2007
est il possible d'exporter des données binaires (images de la base de données) vers excel ?
Ecrit par Jack, janvier 31, 2007
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();
?>






















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.