MySQL -> fichier Excel

WRInaute passionné
bonjour
J'ai une base de données MySQL avec 1 tables content des champs.

Je voudrait affichier le tableau sur une page web et avoir un bouton convertir en fichier Excel afin de reccupérer un fichier Excel avec le contenu de ma table.

Y a t-il une solution?

Merci
 
WRInaute accro
crer un fichier .csv en php séparé de ; pour les champs et de \n pour retour ligne, puis l envoyer en header() au navigateur. tu as besoin de fopen(), fputs(), et header(). ca devrai suffir
 
WRInaute discret
Quelquechose comme :

Code:
header("Content-disposition: filename=listing.csv");
header("Content-type: application/octetstream");
header("Pragma: no-cache");
header("Expires: 0");

$client = getenv("HTTP_USER_AGENT");
if(ereg('[^(]*\((.*)\)[^)]*',$client,$regs)) {
	$os = $regs[1];
	// this looks better under WinX
	if (eregi("Win",$os)) 
		$crlf="\r\n";
	else
		$crlf="\n";
}


while ($enr = <récupération du résultat de ta requete>) {
	print $enr["champ1"] . ";" . $enr["champ2"] . $crlf;
}    
exit();
 
WRInaute accro
tu ouvres un fichiers csv avec la fonction fopen.
tu fais une requete a ta bdd
a chaque enregistrement, tu cree une variable qui contient tous les champs séparés par des ; et terminé par un \n.
une fgois la requete terminée, tu as ton fichier complet, tu l'envois a ton navigateur à l aide de la fonction header. par defaut, le csv va s'ouvrir avec excel si le client l'a installé sur sa machine
 
WRInaute passionné
ok

Merci blman, mais je passe comment après à mon fichier excel?

Car avec le script, ça m'affiche dans mon navigateur un truc comme

Code:
ID;PASTUCES-phpInfo.net P;PGeneral P;P#,##0.00 P;P#,##0 P;P@ P;EArial;M200 P;EArial;M200 P;EArial;M200 P;FArial;M200;SB B;Y13;X2 F;W1 1 5 F;W2 2 20 F;W3 256 8 F;SDM4;FG0C;Y1;X1 C;N;K"N°" F;SDM4;FG0C;X2 C;N;K"Rubrique" F;P3;FG0R;Y2;X1 C;N;K"yukuil" F;P3;FG0L;X2 C;N;K"nyukn" F;P3;FG0R;Y3;X1 C;N;K"vert" F;P3;FG0L;X2 C;N;K"zetzet" F;P3;FG0R;Y4;X1 C;N;K"vzertbert" F;P3;FG0L;X2 C;N;K"vzer" F;P3;FG0R;Y5;X1 C;N;K"tyht" F;P3;FG0L;X2 C;N;K"yjhtykj" F;P3;FG0R;Y6;X1 C;N;K"evse" F;P3;FG0L;X2 C;N;K"vtret" F;P3;FG0R;Y7;X1 C;N;K"tyj" F;P3;FG0L;X2 C;N;K"tyj" F;P3;FG0R;Y8;X1 C;N;K"dfhfh" F;P3;FG0L;X2 C;N;K"fjhgj" F;P3;FG0R;Y9;X1 C;N;K"dfh" F;P3;FG0L;X2 C;N;K"fgjhfgj" F;P3;FG0R;Y10;X1 C;N;K"test" F;P3;FG0L;X2 C;N;K"test" F;P3;FG0R;Y11;X1 C;N;K"zvery" F;P3;FG0L;X2 C;N;K"zbtr" F;P3;FG0R;Y12;X1 C;N;K"ertert" F;P3;FG0L;X2 C;N;K"erte" F;P3;FG0R;Y13;X1 C;N;K"test sdgfouihsd fosiuhdf ozuief zpfiçu z" F;P3;FG0L;X2 C;N;K"test dsflk,nzegf sdpfoj s^pdofpso s$dp)fgo spdogipsdfi sôdifg" E

Et après?

Merci
 
WRInaute accro
Tu dois avoir une erreur de code (ça pardonne pas avec SYLK !).
Une fois enregistré, ton fichier, tu l'ouvre tout simplement dans Excel. Il y a même l'icone Excel sous Windows, tu double-clic tout simplement dessus.
 
WRInaute accro
Code:
$champs = Array(
      //     champ       en-tête     format         align  width
      Array( 'code',     'N°',       FORMAT_ENTIER, 'R',     5 ),
      Array( 'rubrique', 'Rubrique', FORMAT_TEXTE,  'L',    20 ),
      Array( 'titre',    'Astuce',   FORMAT_TEXTE,  'L',    70 ),
      Array( 'auteur',   'Auteur',   FORMAT_TEXTE,  'C',    20 )
    );

Ca, c'est assez important, de mémoire. Si tu veux pas te tromper, met tout en FORMAT_TEXTE au début pour tester. Gère bien aussi les longueurs...
 
WRInaute passionné
ok

OK, ca marche.
Le problème c'est que dans ma base de données, j'ai des champs textes avec des retours à la ligne.
Donc dans le ficier excel il va m'afficher que la 1er ligne de ces champs texte :cry:

Par exemple dans ma base de données j'ai un champs
Code:
test
test1
test2
test3

dans mon excel il m'affiche pour ce champs que "test"

Une solution?

Merci
 
WRInaute accro
Je n'ais pas de test sous la main mais si tu met ton entête en FORMAT_TEXTE et que tu retrouve le code qui correspond à un retour de ligne, tu dois pouvoir t'en sortir.

Pour info, dans Excel, pour rechercher un retour de ligne, il faut taper 0010 (ou 0013) en tenant la touche ALT enfoncée (dans le champ de recherche bien sûr). Peut-être que ça peut te donner une piste...
 
Discussions similaires
Haut