Bonjour à tous,
J'ai créé une page "exportation.php" qui doit exporter une table MySQL hébergé sur un serveur PHP 5.5 chez 1and1.
Voici le code :
Malheureusement, le résultat de la requête s'affiche bien, mais dans la page web et sans formatage.
Je souhaiterais avoir un fichier excel *.xls qui se télécharge au terme de la requête.
Ce qui n'est pas le cas pour le moment.
J'ai regardé chaque ligne de code, et je ne vois pas d'où vient le problème.
Merci d'avance.
J'ai créé une page "exportation.php" qui doit exporter une table MySQL hébergé sur un serveur PHP 5.5 chez 1and1.
Voici le code :
<?php
$hostname="localhost:/tmp/mysql5.sock";
$username="XXXXXXXXXXXXXXXXXXXX";
$password="XXXXXXXXXXXXXXXXXXXX";
$link = mysql_connect("$hostname", "$username", "$password") or die('Connexion impossible !<br>'.$sql.'<br>'.mysql_error());;
// Sélection des donnees
mysql_select_db('XXXXXXXXXXXXXXXXX'); // sélection de la base
$result=mysql_query("select * from invites order by id_invite asc") or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// Fonctions 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=inscription.xls");
header("Content-Transfer-Encoding: binary ");
xlsBOF();
// Insertion de la ligne 1 : Titre de la feuille
xlsWriteLabel(0,0,"Inscriptions");
// Insertion des entêtes de colonnes.
xlsWriteLabel(2,0,"ID");
xlsWriteLabel(2,1,"NOM");
xlsWriteLabel(2,2,"PRENOM");
$xlsRow = 4;
// Insertion des données dans chaque ligne
while($row=mysql_fetch_array($result)){
xlsWriteLabel($xlsRow,0,$row['id_invite']);
xlsWriteLabel($xlsRow,1,$row['nom_invite']);
xlsWriteLabel($xlsRow,2,$row['prenom_invite']);
$xlsRow++;
}
xlsEOF();
exit();
?>
Malheureusement, le résultat de la requête s'affiche bien, mais dans la page web et sans formatage.
Je souhaiterais avoir un fichier excel *.xls qui se télécharge au terme de la requête.
Ce qui n'est pas le cas pour le moment.
J'ai regardé chaque ligne de code, et je ne vois pas d'où vient le problème.
Merci d'avance.