Rechercher : dans
Par :

Exportation mySQL vers excel via PHP

SuD_976, le 7 oct 2002 à 15:48:52
 Signaler ce message aux modérateurs

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

1

Taboujr, le 7 oct 2002 à 16:45:27
  • +2

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, le 7 oct 2002 à 16:57:25
  • +1

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"

4

SuD_976, le 8 oct 2002 à 09:03:24

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

5

teebo, le 8 oct 2002 à 09:49:10
  • +1

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"

6

SuD_976, le 9 oct 2002 à 10:43:05

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

7

cedric, le 22 nov 2006 à 12:24:41

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.

8

aynsoufiane, le 13 mai 2008 à 18:51:30
  • +3

<?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 ;
?>

9

Helrick, le 13 mai 2008 à 22:04:38

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.

10

aynsoufiane, le 14 mai 2008 à 10:28:40
  • +2

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.

14

 highfer, le 5 oct 2009 à 15:31:59

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...

11

hello, le 30 nov 2008 à 17:55:18

Merci soufiane!

13

angelusflm, le 4 mar 2009 à 10:58:04

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 ;

?>