Export en xls

Eléphant du PHP | 104 Messages

17 janv. 2011, 11:38

Bonjour,

J'aimerais réaliser une exportation d'un test sur un document .xls . Après quelques recherches sur internet et des tests (tous échoués :( ) je viens vous demander conseil.

Voilà mon code actuel :
<?php
		
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=test.xls");


//Connexion au serveur de bdd
mysql_connect("localhost", "bb", "cc") or die("Problème connexion serveur");		
// Connexion à la BDD
mysql_select_db("aa") or die("Problème connexion BDD");
	
$sql = "SELECT * FROM test WHERE ec='av' AND clo='1a' AND testa='1' AND testb='1' ORDER BY nom ASC";
$enreg = mysql_query($sql)

$tbl= " <table border='0' cellpadding='0' cellspacing='0'>
<tr bgcolor='#CCCCCC' height='40px'>
<td>Nom</td>
<td>Prénom</td>
<td>Mail</td>
<td>Compréhension</td>
<td>Ecrit</td>
</tr>";
while ($data = mysql_fetch_array($enreg))
{

$nom = $data['nom'];
$prenom = $data['prenom'];
$mail = $data['mail'];
$comprehension = $data['aq01'] + $data['aq02'];  // je dois faire une addition des colonnes de ma BDD à ce niveau par rapports aux réponses que j'ai eu
$ecrit = $data['bq01'] + $data['bq02']; // pareil

$tbl = $tbl . "<tr>";
$tbl = $tbl . "<td>" . $nom . "</td>";
$tbl = $tbl . "<td>" . $prenom . "</td>";
$tbl = $tbl . "<td>" . $mail . "</td>";
$tbl = $tbl . "<td>" . $comprehension . "</td>";
$tbl = $tbl . "<td>" . $ecrit . "</td>";
$tbl = $tbl . "</tr>";
}
$tbl = $tbl . "</table>";

print ($tbl);
exit;
?>
Pouvez vous m'aider s'il vous plait ?

PS : Actuellement ce code me sors qu'une page blanche

ViPHP
ViPHP | 5462 Messages

17 janv. 2011, 11:40

commente les headers et tu verras

Eléphant du PHP | 104 Messages

17 janv. 2011, 11:44

Bonjour Stealth et merci de ta réponse aussi rapide.

Quand tu me dis : "commente les headers" c'est mettre "//" devant ?

Si oui ça ne change rien

ViPHP
xTG
ViPHP | 7331 Messages

17 janv. 2011, 11:45

J'avais lu à une époque tout un tas d'articles pour générer des fichiers excel mais c'est la première fois que je vois des balises html intervenir dans le code.
J'ai retrouvé cela dans mes favoris si cela peut t'aider, c'est une autre méthode mais qui est complètement expliquée et qui est multi-plateforme : mysql vers excel via php et sylk

ViPHP
ViPHP | 5462 Messages

17 janv. 2011, 11:48

Bonjour Stealth et merci de ta réponse aussi rapide.

Quand tu me dis : "commente les headers" c'est mettre "//" devant ?

Si oui ça ne change rien
faut activer les erreur de php : error_reporting(-1) et ini_set('display_errors', true)
mais déjà regarde y'a du html dans ton fichier...

Eléphant du PHP | 104 Messages

17 janv. 2011, 11:49

En fait j'ai des balises HTML car j'ai repris mon code qui me permettais d'afficher ce que je voulais dans une page HTML, mais on me demande de l'avoir sur excel (forcement ce que je sais faire on n'en veux pas, et ce que je n'arrive pas à faire on me le demande :( )

[EDIT] : J'ai mis
error_reporting(-1);
ini_set('display_errors', true);
entre "print ($tbl);" et "exit;" mais ça ne m'affiche rien. Est ce mal placé ?

Pour ce qui est du HTML, il ne doit pas y en avoir ?

ViPHP
ViPHP | 5462 Messages

17 janv. 2011, 12:00

En fait j'ai des balises HTML car j'ai repris mon code qui me permettais d'afficher ce que je voulais dans une page HTML, mais on me demande de l'avoir sur excel (forcement ce que je sais faire on n'en veux pas, et ce que je n'arrive pas à faire on me le demande :( )

[EDIT] : J'ai mis
error_reporting(-1);
ini_set('display_errors', true);
entre "print ($tbl);" et "exit;" mais ça ne m'affiche rien. Est ce mal placé ?

Pour ce qui est du HTML, il ne doit pas y en avoir ?
il faut faire un format CSV, regarde du coté de fputcsv

Eléphant du PHP | 104 Messages

17 janv. 2011, 12:07

Ne vous moquez pas mais l'erreur venait d'un oublie de ";" à la ligne : "$enreg = mysql_query($sql)"

Et il faut enlever les // au niveau des headers. Maintenant j'ai bien mon fichier xls.

Je vous remercie de votre aide et de votre réactivité.