Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1828 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Recuperer données SQL en fichier Excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Recuperer données SQL en fichier Excel

n°1386992
sylvnr
Posté le 13-06-2006 à 22:18:07  profilanswer
 

Bonsoir ,je developpe en ce moment un petit site en Php et dedans j'effectue quelques requêtes SQL sur ma base de donnée, et j'aimerai savoir si il existerai une technique de permettre à l'utilisateur de recuperer ces données sous forme de feuille excel ou quelque chose de semblable?  
 
merci d'avance :D

mood
Publicité
Posté le 13-06-2006 à 22:18:07  profilanswer
 

n°1387019
nargy
Posté le 13-06-2006 à 22:59:46  profilanswer
 

Pas au format excel directement.
Par contre tu peut exporter ta BDD au format texte, avec séparateur de champs ``;``, de ligne par un retour chariot, les chaînes de caractères étant délimitées par des doubles guillemets ".
Puis importer le format texte sous excel.


Message édité par nargy le 13-06-2006 à 23:01:04
n°1387091
sylvnr
Posté le 14-06-2006 à 08:35:19  profilanswer
 

comment exporter en format texte?
desolé en php comme en mysql je suis tres novice donc je ne connais pas trop les outils.

n°1387105
nargy
Posté le 14-06-2006 à 09:16:15  profilanswer
 

Par exemple, pour exporter une table produit, avec les champs reference (nombre entier), description (texte), prix (nombre à virgule):

Code :
  1. <?
  2.   // connection et sélection d'une base
  3.   $db=mysql_connect(...); // à remplir
  4.   if(!$db) die("Erreur: ".mysql_error());
  5.   // indiquer que ce qui suit est un fichier texte en français:
  6.   header("Content-type: text/plain; charset=ISO-8859-1" );
  7.   // selectionner tous les produits de la table
  8.   $res=mysql_query("SELECT * FROM produits;" );
  9.   // parcourrir tous les produits trouvés
  10.   while($prod=mysql_fetch_array($res))
  11.   {
  12.     // nombre entier
  13.     echo $produit['reference'];
  14.     echo ";"; // séparateur de champs
  15.     // chaîne, avec des guillemets
  16.     echo '"'.addslashes($produit['description']).'"';
  17.     echo ";"; // séparateur de champs
  18.     // nombre à virgule
  19.     echo $produit['prix'];
  20.     echo "\r\n"; // séparateur de ligne
  21.   }
  22. ?>


Ok, je n'ai pas testé le code, mais tu peut partir sur cette base. Je ne me rappelle plus s'il faut échapper les séparateurs ``;`` dans les chaînes. Si ça te coupe un champs texte en plusieurs colonnes c'est qu'il y a un problème à ce niveau.
Le fichier renvoyé par le script et de type texte.
 
Edit: ha ouais, j'ai jamais utilisé PEAR... c'est sûr s'il y a des trucs tout fait pour l'export, c'est plus simple.


Message édité par nargy le 14-06-2006 à 10:41:52
n°1387106
rufo
Pas me confondre avec Lycos!
Posté le 14-06-2006 à 09:22:02  profilanswer
 

ce dont il parle, c'est un export au format "CSV". Excel sait très bien ouvrir nativement ce genre de fichiers. sinon, y'a une lib GPL qui s'appelle "spreadsheet" (voir sur le site de PEAR, c'est un package)...

n°1387753
sylvnr
Posté le 14-06-2006 à 20:53:35  profilanswer
 

ok merci
je dois encore bosser sur quelques requêtes ce soir, si j'ai le temps je jete un coup d'oeil à cela après, merci de vôtre aide en tout cas

n°1387832
sylvnr
Posté le 14-06-2006 à 23:06:19  profilanswer
 

bon je viens d'essayer et j'ai ce probleme
 
Warning: Cannot modify header information - headers already sent by (output started at /home/.filer4/.../mafeuilleV3.php:8) in /home/.filer4/.../Spreadsheet/Excel/Writer.php on line 67,68,69,70,71     et également
 
Fatal error: Call to undefined function: write() in /home/.filer4/.../mafeuilleV3.php on line 412
 
 
j'arrive pas a le resoudre,et j'ai bien amené le fichier writer.php donc je en sais pas pourquoi la methode write() ne fonctionne pas
 
sur ce je vais me coucher bonne nuit,avec un peu de chance j'aurai des reponses demain matin :D

n°1387882
nargy
Posté le 15-06-2006 à 08:05:58  profilanswer
 

Tu peut poster le code?
 
Le première erreur est dûe au fait que tu doit utiliser la fonction header() avant d'envoyer des caractères sur la sortie.
Principales causes:

  • tu utilise une fonction write(), echo, print() ... avant header()
  • tu as un morceau de HTML avant la balise PHP <? ?> (ça peut être un espace, un retour à la ligne, ça peut provenir d'un fichier inclu avec include() ou require())
  • un message d'erreur s'est affiché avant header()

n°1388440
sylvnr
Posté le 15-06-2006 à 20:34:54  profilanswer
 

je viens de rentrer de la fac, je posterai mon code ce soir et j'essayerai malgré tout de chercher également de mon coté

n°1388458
sylvnr
Posté le 15-06-2006 à 21:06:22  profilanswer
 

nargy a écrit :

Tu peut poster le code?
 
Le première erreur est dûe au fait que tu doit utiliser la fonction header() avant d'envoyer des caractères sur la sortie.
Principales causes:

  • tu utilise une fonction write(), echo, print() ... avant header()
  • tu as un morceau de HTML avant la balise PHP <? ?> (ça peut être un espace, un retour à la ligne, ça peut provenir d'un fichier inclu avec include() ou require())
  • un message d'erreur s'est affiché avant header()


 
Voila mon code :
 

Code :
  1. require_once 'Spreadsheet/Excel/Writer.php';
  2. // Création d'un manuel de travail
  3. $workbook = new Spreadsheet_Excel_Writer();
  4. // Envoi des en-têtes HTTP
  5. $titre4="mostvisitedconcept$selection.xls";
  6. $workbook->send($titre4);
  7. // Création d'une feuille de travail
  8. $nom4="Concepts les plus visités par $son_nom $son_prenom ";
  9. $worksheet =& $workbook->addWorksheet($nom4);
  10. // une mise en forme pour les titre
  11. $format_title =& $workbook->addFormat();
  12. $format_title->setBold();
  13. $format_title->setColor('black');
  14. $format_title->setPattern(1);
  15. $format_title->setFgColor('blue');
  16. $format_title->setAlign('center');
  17. // une mise en forme pour le contenu
  18. $format_data =& $workbook->addFormat();
  19. $format_data->setAlign('center');
  20. $format_data->setTextWrap();
  21. $format_data->setHAlign('left');
  22. $format_data->setVAlign('top');
  23. // nombre de colonne ds la table
  24. $nb = mysql_num_fields($req4bis);
  25. // pour chaque colonne je met le titre ds la première ligne du fichié
  26. for($i=0;$i<$nb;$i++){
  27.  $worksheet->write(0, $i, mysql_field_name ( $req4, $i),$format_title);
  28.  if(mysql_field_len ( $req4, $i ) > 50 )
  29.   $worksheet->setColumn ($i, $i, 50);
  30.  else
  31.   $worksheet->setColumn ($i, $i, 20);
  32. }
  33. $u=1;
  34. // tant qu'il y a des enregistrements
  35. while($data = mysql_fetch_array($req4)){
  36.  // de la première à la desnière colonne
  37.  for($i=0;$i<$nb;$i++){
  38.   // j'écrit mes données
  39.   $worksheet->write( $u, $i, $data[$i], $format_data);
  40.  }
  41.  $u++;
  42. }
  43. //mysql_close();
  44. // Envoi du fichier
  45. $workbook->close();


 
 
voila et je met ce code dans un fichier php ou il y a plusieurs fois du html et du php, je pensais que je pouvais le mêler à ma page.
Il s'agit d'un formulaire qui traite les infos en fonction de ce qui a été choisi dans le formulaire ,et affiche ces info en dessous du formulaire.

mood
Publicité
Posté le 15-06-2006 à 21:06:22  profilanswer
 

n°1389430
sylvnr
Posté le 16-06-2006 à 22:27:48  profilanswer
 

Bon j'arrive decidement pas du tout à m'en servir,si quelqu'un pouvait m'aider ca serait tres sympa !
je laisse mon msn au cas ou
 
sylvnrter@hotmail.fr

n°1389866
rufo
Pas me confondre avec Lycos!
Posté le 18-06-2006 à 10:56:53  profilanswer
 

avant Spreadsheet_Excel_Writer, t'as essayé d'exporter tes données en csv? Parce que si ça suffit pour ce que tu veux faire, pas la peine de te prendre la tête avec cette lib...

n°1390204
sylvnr
Posté le 18-06-2006 à 22:55:19  profilanswer
 

je l'ai fait en csv ca marche bien mais bon je sais pas trop si c'est possible de mettre des cadres ou de faire des jeux sur le texte (par exemple mettre le titre de la table en bold,et mettre un cadre autour de mes données quoi)

n°1390298
rufo
Pas me confondre avec Lycos!
Posté le 19-06-2006 à 10:31:12  profilanswer
 

sylvnr a écrit :

je l'ai fait en csv ca marche bien mais bon je sais pas trop si c'est possible de mettre des cadres ou de faire des jeux sur le texte (par exemple mettre le titre de la table en bold,et mettre un cadre autour de mes données quoi)


 
non, ça, c'est pas possible en csv.

n°1391056
sylvnr
Posté le 19-06-2006 à 22:45:37  profilanswer
 

ah
bah dommage  
je ferais sans merci quand meme :(


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Recuperer données SQL en fichier Excel

 

Sujets relatifs
[Excel-VBA] Conversion de fichiers excel -> BDrécupérer la date de modification d'un fichier
Modifications des données dans mysql avec VB6récupérer l'adresse mac d'un client
recuperer l'adress mac de pc en reseau /batchAcceder en VBS via ligne de cmd à un fichier excel
récupérer un nom de machineRécupérer puis modifier des infos depuis un fichier texte
Plus de sujets relatifs à : Recuperer données SQL en fichier Excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR