IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[CSV] Formatage d'un CSV [Fait]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Par défaut [CSV] Formatage d'un CSV
    Bonjour,

    J'ai une fonction php qui permet de générer un fichier csv avec des données issues d'une requête (Base Mysql).
    ca fonctionne trés bien, sauf que le résultat de la requête se met dans une seul cellule du fichier csv une fois ouvert par l'utilisateur sous Excel
    Voici le code de la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
     
    function ExportCsv ()
    {
    $resQuery = ExecRequete($_SESSION['Requete']);
     
    	$Fic = str_replace(array(dirname($_SERVER['PHP_SELF'])."/", ".php"), "", $_SERVER['PHP_SELF']) 
    		. "_". date(Y)."_".date(d)."_".date(m)."_".date(s)."_".date(i)."_".date(G);
     
    	header("Content-Type: application/vnd.ms-excel");
    	header("Expires: 0");
    	header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    	header("content-disposition: attachment;filename=$Fic.csv");
    	$text = "<table>";
    	$text .= "<tr><td>Export données Web Gestuo</td></tr>";
    	$text .= "</table>";
    	echo $text;
     
      if (mysql_num_rows($resQuery) != 0) 
      {
    	    // titre des colonnes
    	    $fields = mysql_num_fields($resQuery);
    	    $i = 0;
    	    while ($i < $fields) 
    	    {
    	      echo mysql_field_name($resQuery, $i).",";
    	      $i++;
    	    }
    	    echo "\n";
     
    	    // données de la table
    	    while ($arrSelect = mysql_fetch_array($resQuery, MYSQL_ASSOC)) 
    	    {
    		     foreach($arrSelect as $elem) 
    		     {
    		      echo "$elem,";
     
    		     }
    		     echo "\n";
    	    }
    }
    Le résultat donne ca :

    Date,Nom,Libelle,Stat,Nbre, 2007-01-092007-01-09,Autre, classique,166.3797,1949, 2007-01-092007-01-09,Autre, classique,163.9209,707, 2007-01-092007-01-09,Autre, classique,173.9459,3014,
    Le résulat que je voudrai c'est ca :

    Date Nom Libelle stat Nbre
    092007-01-09 Autre classique 166.3797,1949 1949
    092007-01-09 Autre classique 163.9209,707 707
    092007-01-09 Autre classique 173.9459,3014 3014

    Quelqu'un aurait une idée pour formater le résultat sous le format ci-dessus

    Merci d'avance,

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    C'est Excel qui ouvre le CSV comme ça si tu double cliques sur le fichier. Pour qu'il l'ouvre bien il faut lancer Excel puis faire ouvrir un fichier dans le menu. Ton CSV est bien formé en tout cas comme tu fais.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Par défaut
    Jsutement c'est déja le cas (Excel ouvre le csv), mais le probléme c'est que toutes les données se mettent dans une même cellule (la première celulle A1)

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Je viens d'essayer et j'ai inversé les deux versions. Chez moi en double-cliquant sur le fichier CSV il s'ouvre proprement, mais en lançant d'abord Excel puis en faisant "ouvrir un fichier" ça fait comme toi, et pour que l'affichage soit bon il faut aller dans le menu "Données => Convertir" et choisir le délimiteur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 62
    Par défaut
    oui, c'est que c'est une solution
    mais comme les utilisateurs n'ont que des notions de bases sur xls
    j'aurais préféré leur donner la possibilité d'ouvrir directement le fichier formaté
    sinon, je sai qu'il ne s'en sortiront pas

  6. #6
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par nbelg27
    oui, c'est que c'est une solution
    mais comme les utilisateurs n'ont que des notions de bases sur xls
    j'aurais préféré leur donner la possibilité d'ouvrir directement le fichier formaté
    sinon, je sai qu'il ne s'en sortiront pas
    Chez toi en doublr cliquant ça met tout dans la première cellule c'est ça ? Malheureusement je pense que c'est Excel qui fait sa sauce et qu'on y peut pas grand chose, essaie peut-être de mettre le point-virgule en délimiteur on sait jamais...

  7. #7
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 713
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 713
    Par défaut
    Citation Envoyé par nbelg27
    je sai qu'il ne s'en sortiront pas
    dans ce cas essaye peut être de trouver une solution qui n'utilise pas Excel

Discussions similaires

  1. Formatage de fichier csv
    Par tyvix dans le forum Shell et commandes GNU
    Réponses: 10
    Dernier message: 19/09/2007, 11h08
  2. problème de formatage de fichier CSV
    Par HA-MS dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/09/2007, 12h39
  3. [CSV] Générer un fichier CSV
    Par Taz_8626 dans le forum Langage
    Réponses: 6
    Dernier message: 18/07/2006, 09h25
  4. Réponses: 12
    Dernier message: 07/12/2005, 19h42
  5. [CSV] Exploitation du format csv
    Par flopad dans le forum Langage
    Réponses: 17
    Dernier message: 08/11/2005, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo