pb export php ==> excel
salut a tous,
voila je voudrai convertir des champs d'une base sql en fichier excel
voila le code
//Premiere ligne = nom des champs
$csv_output = "a,b,c";
$csv_output .= "n";
//Requete SQL
$query = "SELECT a,b,c FROM table_reporting order by id asc " ;
$result = mysql_query($query)
or die('Erreur SQL !' . $query . '' . mysql_error());
//Boucle sur les resultats
while($row = mysql_fetch_array($result)) {
$csv_output .= "$row[a] $row,$row[c]n";
}
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=essai.xls");
print $csv_output;
exit;
le fichier se creer mais toutes les valeurs sont dans un même champ ?
j'aimerai bien que dans mon tableau excel le 1er champ soit a, lesecond b et le 3eme c et quensuite chaque valeur de la base sql se place dans le champ correspondant
pouvez vous SVP m'aider ?
~_enricall_~
//Boucle sur les resultats
while($row = mysql_fetch_array($result)) {
$csv_output .= "$row[a],$row,$row[c]\\n";
}
Sinon, essaie de sauvegarder ton fichier en format .csv.
De plus, je crois qu'Excel utilise un autre séparateur que ',' par défaut. Si je ne me trombe pas, c'est t. Tu n'a rien à perdre.
LePHPFacile semble enlever les caratères spéciaux... comme je n'arrive pas à modifier l'autre message, voici ma seconde tentative.
//Boucle sur les resultats
while($row = mysql_fetch_array($result)) {
$csv_output .= "$row[a],$row,$row[c]\n";
}
Sinon, essaie de sauvegarder ton fichier en format .csv.
De plus, je crois qu'Excel utilise un autre séparateur que ',' par défaut. Si je ne me trombe pas, c'est \t. Tu n'a rien à perdre.
select into outfile.
Quelques remarques par rapports au script proposé :
- que ce passe-t-il lorsque l'ensemble des données dépassent les 3 Mo ?
- pourquoi associer un type de données invalides aux données renvoyées ?
Voici une ébauche que je peux te proposer :
<?php
define('SEP', ",") ;
define('MIME', "[lien=http://fr.selfhtml.org/divers/typesmime.htm]text/comma-separated-values[/lien]") ;
define('EXT', "csv") ;
// Ce sont bien sûr des anti-slashes dans la chaîne.
define('EOL', "/n" /* "/r/n" */) ;
define('FILENAME', "essai") ;
$query = "SELECT a,b,c FROM table_reporting order by id asc " ;
$result = mysql_query($query)
or die('Erreur SQL !' . $query . '' . mysql_error());
header("Content-type: ".MIME);
header("Content-disposition: attachment; filename=".FILENAME.".".EXT);
echo "a".SEP."b".SEP."c".SEP.EOL ;
while($row = mysql_fetch_array($result))
echo $row['a'].SEP.$row['b'].SEP.$row['c'].EOL ;
?>
Il est à noter qu'il faut aussi prendre en compte que les données peuvent contenir des virgules. Dans ces cas, on utilises classiquement un caractère comme les guillemets pour délimiter les chaînes de caractères.
Bref, le script est à affiner. À moins que tu n'utilises ce qui existe déjà dans MySQL ;)
Développeur récurrent, procédural et relationnel. Caustique soupe-au-lait.
Ecrire un message
Votre message vient d'être créé avec succès.
BB-Code
Pour insérer une URL clickable
Pour insérer une adresse E-mail
Pour annoter
Pour écrire du code
Pour faire un lien vers une fonction PHP
Pour écrire du texte préformaté
Pour écrire du texte en gras
Pour écrire du texte en italique
Pour écrire du texte souligné
Pour écrire du texte barré
Pour écrire un titre principal
Pour écrire un titre secondaire
Pour écrire une liste
Smiley
:bond:
:boxe:
:bsmile:
:bump:
:clap:
:coeur:
:cool:
:cry:
:eek:
:evil:
:fleur:
:fou2:
:fou:
:grin:
:grrr:
:hammer:
:hippy:
:hum:
:idee2:
:idee:
:kdo:
:king:
:ko:
:lol:
:love2:
:love:
:mad:
:maitre:
:noel:
:oops:
:raa:
:razz:
:roll:
:sad:
:skull:
:smile:
:timide:
:trink:
:vice:
:vomi:
:wink:
:zzz: