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 :

PHP vers Excel - Données à exporter


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut PHP vers Excel - Données à exporter
    Bonjour

    je souhaite exporter une liste créée en php/sql dans un fichier Excel.
    J'ai donc trois champs (qui correspondraient à trois colonnes dans Excel) : id_projet, nom_projet, statut_projet.

    Avec le code suivant, j'arrive bien à exporter mes données dans un fichier excel :
    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
     
    //Premiere ligne = nom des champs 
    $csv_output = "id_projet;nom_projet;statut_projet";
    $csv_output .= "\n";
     
    //Requete SQL
    $query = "SELECT id_projet,nom_projet,statut_projet FROM projet ORDER BY nom_projet ASC;";
     
    $result = mysql_query($query) or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
     
    //Boucle sur les resultats
    while($row = mysql_fetch_array($result)) 
    {
    $csv_output .= "$row[id_projet];$row[nom_projet];$row[statut_projet]\n";
    }
     
    header("Content-type: application/vnd.ms-excel");
    header("Content-disposition: attachment; filename=" . date("Ymd")."_liste_projets.xls");
    print $csv_output;
    exit;
    mais chaque ligne s'écrit uniquement dans la première cellule et non chaque donnée dans une seule cellule.

    Exemple pour y voir plus clair :
    - je voudrais :
    • Cellule A1 : id_projet1
    • Cellule A2 : nom_projet1
    • Cellule A3 : statut_projet1
    • Cellule B1 : id_projet2
    • Cellule B2 : nom_projet2
    • Cellule B3 : statut_projet2


    - mais j'obtiens :
    • Cellule A1 : id_projet1;nom_projet1;statut_projet1
    • Cellule A2 : id_projet2;nom_projet2;statut_projet2


    Y'a-t-il un moyen simple d'obtenir ce que je souhaite ?
    Merci

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Ce que tu fais actuellement est un fichier CSV, pas un fichier XLS.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $csv_output .= implode(";",$row) ."\n";
    }
    header("Content-type: application/csv");
    header("Content-disposition: attachment; filename=" . date("Ymd")."_liste_projets.csv");
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre éclairé Avatar de baggie
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    755
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 755
    Par défaut
    Merci sabotage pour ta réponse. J'ai modifié mon code par le tien et ça fonctionne à un détail près : tous mes champs sont dupliqués ! Ils apparaissent en double :

    - A1 : idprojet1
    - A2 : idprojet1
    - A3 : nomprojet1
    - A4 : nomprojet1
    - A5 : statutprojet1
    - A6 : statutprojet1

    Voici le code :
    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
     
    //Premiere ligne = nom des champs (si on en a besoin)
    $csv_output = "id_projet,nom_projet,statut_projet";
    $csv_output .= "\n";
     
    //Requete SQL
    $query = "SELECT id_projet,nom_projet,statut_projet FROM projet ORDER BY nom_projet ASC;";
     
    $result = mysql_query($query) or die('Erreur SQL !<br />' . $query . '<br />' . mysql_error());
     
    //Boucle sur les resultats
    while($row = mysql_fetch_array($result)) {
    $csv_output .= implode(";",$row) ."\n";
    }
    header("Content-type: application/csv");
    header("Content-disposition: attachment; filename=" . date("Ymd")."_liste_projets.csv");
     
    print $csv_output;
    exit;
    Une idée ?

    EDIT : j'ai résolu mon problème en spécifiant un à un les champs ! Donc c'est bon =)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] export php vers Excel probleme de colonne
    Par nawak.seb dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/02/2009, 12h06
  2. Envoi Formulaire php vers Excel ou Autre
    Par ju3979 dans le forum Langage
    Réponses: 1
    Dernier message: 17/12/2008, 21h53
  3. [Oracle] exportation oracle php vers Excel
    Par atef83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 10/05/2007, 10h59

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