Exportation mySQL vers excel via PHP

Résolu/Fermé
SuD_976 - 7 oct. 2002 à 15:48
 highfer - 5 oct. 2009 à 15:31
Bonjour!

je suis à la recherche du moyen le plus efficace et le plus rapide à mettre en place pour exporter le contenu de tables MySQL vers un format compatible Excel en utilisant PHP.

On m'a parlé de SYLK, l'avez vous déjà utilisé? est-ce que c la meilleur solution??

merci beacoup pour vos réponses à venir...
@ bientot

SuD

7 réponses

aynsoufiane Messages postés 2 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 14 mai 2008
13 mai 2008 à 18:51
<?php

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=nom_fichier.xls");


// selectionner la base de données

mysql_select_db($database_conn, $conn);
$sql = "SELECT * FROM client";
$sql = mysql_db_query($database_conn,$sql);

$tbl= " <table border='0' cellpadding='0' cellspacing='0'>
<tr bgcolor='#CCCCCC' height='40px'>
<td>nom</td>
<td>prenom</td>
<td>email</td>
</tr>";
while ($data = mysql_fetch_array($sql))
{
$tbl = $tbl . "<tr>";
$tbl = $tbl . "<td>" . $data[nom'] . "</td>";
$tbl = $tbl . "<td>" . $data['prenom'] . "</td>";
$tbl = $tbl . "<td>" . $data['email'] . "</td>";
$tbl = $tbl . "</tr>";
}
$tbl = $tbl . "</table>";

print $tbl ;
?>
14
Hello aynsoufiane
J'ai testé ton code. Il ne fonctionne pas. Ca serait gentil de m'aider à comprendre ce que je fais de mal.
Dans le second Header j'ai essayé de modifier sous plusieurs syntaxes le ...filename =...
Rien à faire ça me dit : Erreur IE n'as pas pu télécharger le fichier "nom de fichier.php"....

<?php
session_start();
include 'MDI_AccesClient.php';//Login + mot de passe

?>
[Head de HTML...ECT]
<?php

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename='http://www.monsite.org/test_v1.xls'");


// selectionner la base de données

$sql = "SELECT nom, prenom, ville FROM P_MCI_180";
$sql = mysql_query($sql);

$tbl= " <table border='0' cellpadding='0' cellspacing='0'>
<tr bgcolor='#CCCCCC' height='40px'>
<td>nom</td>
<td>prenom</td>
<td>ville</td>
</tr>";
while ($data = mysql_fetch_array($sql))
{
$tbl = $tbl . "<tr>";
$tbl = $tbl . "<td>" . $data['nom'] . "</td>";
$tbl = $tbl . "<td>" . $data['prenom'] . "</td>";
$tbl = $tbl . "<td>" . $data['ville'] . "</td>";
$tbl = $tbl . "</tr>";
}
$tbl = $tbl . "</table>";

print $tbl ;
?>

Merci bcp. J'espère que tu pourras m'aider j'aimerais bien comprendre pourquoi ça ne fonctionne pas.
0
aynsoufiane Messages postés 2 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 14 mai 2008 > Helrick
14 mai 2008 à 10:28
header("Content-Disposition: attachment; filename='http://www.monsite.org/test_v1.xls'");

tu donne seulement le nom de ton fichier xsl
header("Content-Disposition: attachment; filename=test_v1.xls");

le fichier sera créer dans le dossier Temporary Internet Files en suite IE te demandera si tu veux l ouvrir directement ou l'enregistrer sur un emplacement de ton choix.
0
Bonjour,

j'ai utilisé le premier code donné par aynsoufiane, qui fonctionne très bien d'ailleurs, sauf exception pour les FLOAT. Je ne sais pas pourquoi, l'exportation se passe bien, mais quand j'exporte un tableau contenant des float les cases du champs restent vides...
0
J'ai oublié de vous joindre le code :x
<?php require_once('connexion.php'); ?>
<?php

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=nom_fichier.xls");


// selectionner la base de données

$sql = "SELECT agent, date, etat FROM presence";
$sql = mysql_db_query($sql, $dbprotect);

$tbl= " <table border='0' cellpadding='0' cellspacing='0'>
<tr bgcolor='#CCCCCC' height='40px'>
<td>agent</td>
<td>date</td>
<td>etat</td>
</tr>";
while ($data = mysql_fetch_array($sql))
{
$tbl = $tbl . "<tr>";
$tbl = $tbl . "<td>" . $data['agent'] . "</td>";
$tbl = $tbl . "<td>" . $data['date'] . "</td>";
$tbl = $tbl . "<td>" . $data['etat'] . "</td>";
$tbl = $tbl . "</tr>";
}
$tbl = $tbl . "</table>";

print $tbl ;

?>
4
Taboujr Messages postés 507 Date d'inscription vendredi 18 janvier 2002 Statut Membre Dernière intervention 2 janvier 2008 117
7 oct. 2002 à 16:45
Personnellement, j'exporte les données de mes bdds mysql dans un fichier texte que j'ouvre avec Excel. Si les champs sont bien toujours séparés par un séparateur unique dans tous le fichier, et que chaque donnée est écrite sur une ligne, ça marche du feu de dieu !!
Mais bon, y'a p'têt mieux...

Tabou Junior
2
teebo Messages postés 33478 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 796
7 oct. 2002 à 16:57
Je crois que Tabou a la fonction la plus simple... :-D
Si apres tu veux automatise ca, tu peux aussir regarder du cote des scripts XSLT et je pense Python mais je connais pas...

Mais frnachement, export en texte puis ouverture dans Excel, c'est le plus rapide!!!

ö,ö  "Il est plus facile de donner des conseils
\_/    que de les appliquer"
0
Salut !

oui j'avais bien pensé à cette solution mais le problème c que le fichier que l'on doit ouvrir avec excel à pour but d'etre téléchargé par le visiteur (visiteur le plus souvent débutant en informatique). Je voudrais donc que le fichier qui est généré, lorsque l'on double clique dessus, soit automatiquement associé à MS Excel, et porte donc l'icone Excel. De plus, si l'on utilise une méthode avec un fichier texte, les champs de type entier ou double ne seraient pas reconnu en tant que tel dans Excel et ne permettrait pas à l'utilisateur de faire ensuite ses propres calculs (ce qui est le but de l'opération)...

Voilà, merci Taboo et teebo pour votre aide et merci aux autres pour les réponses à venir...

SuD
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
teebo Messages postés 33478 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 796
8 oct. 2002 à 09:49
OK, bon tu peux chercher si il existe des scipts XSLT existant permettant ca (vraisemblablement avec parametrage a la main pour le cas precis, mais le gros du boulot serait fait)
Autre solution, Python, mais notre reference en la matiere n'est pas la en ce moment...Sebsauvage, t'es ou!!!

Sinon, en PHP :-( A la limite, en asp tu aurais plus de chance (standard Microsoft, comme Excel...)

Bonne chance

ö,ö  "Il est plus facile de donner des conseils
\_/    que de les appliquer"
0
Oki

merci beaucoup pour ton aide Teebo, je vais chercher dans le sens XSLT... ASP n'est pas supporté par l'hébergement de mon client :-(

voili

@ bientot

SuD
0
Merci soufiane!
0
Bonjour,

As tu trouvé la solution ?
Moi j'ai créé une page d'enregistrement d'adresses mails.
Je veux récupérer ces mails dans un fichier excel directement à partir de ma page web (sans passer par mysql). Pour ça je veux mettre un bouton télécharger le fichier.

Là je suis perdu.
-1