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

PHP & Base de données Discussion :

Générer un fichier excel [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut Générer un fichier excel
    Bonjour,
    Commenter créer et remplir un fichier .xls ou .cvs à base des données provenant d'une requete SELECT. Tout récemment il y'avait un sujet du genre mais je n'arrive pas à le retrouver.

    Merci d'avance...

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Utilise fputcsv. Tu lis tes données via un bête SELECT, tu les places dans un array et tu boucles sur l'array pour écrire les données via fputcsv
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par Celira Voir le message
    Utilise fputcsv. Tu lis tes données via un bête SELECT, tu les places dans un array et tu boucles sur l'array pour écrire les données via fputcsv
    Oui, merci.
    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
     
    <?php
     
    $list = array (
       array('aaa', 'bbb', 'ccc', 'dddd'),
       array('123', '456', '789'),
       array('"aaa"', '"bbb"')
    );
     
    $fp = fopen('file.csv', 'w');
     
    foreach ($list as $fields) {
        fputcsv($fp, $fields);
    }
     
    fclose($fp);
    ?>
    file.cvs est créé avec des données. Mais toutes les données de chaque array fait l'objet d'une cellule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    aaa,bbb,ccc,dddd // dans la meme cellule
    123,456,789 // dans la meme cellule
    "aaa","""bbb""" // dans la meme cellule
    Pourtant je souhaite la première cellule me fasse 4 plutôt.

    Merci pour votre aide.

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Excel sépare automatiquement les données d'un fichier .csv dans des colonnes distinctes quand ce dernier est bien formaté. Le séparateur automatiquement reconnu par excel est ; et non ,
    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
    <?php
     
    $list = array (
       array('aaa', 'bbb', 'ccc', 'dddd'),
       array('123', '456', '789'),
       array('"aaa"', '"bbb"')
    );
     
    $fp = fopen('file.csv', 'w');
     
    foreach ($list as $fields) {
        fputcsv($fp, implode(';', $fields));
    }
     
    fclose($fp);
    ?>

  5. #5
    Membre confirmé Avatar de Lordsephiroth
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2006
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2006
    Messages : 199
    Points : 494
    Points
    494
    Par défaut
    Bonjour,
    Personnellement mon application exporte les données au format HTML (sans balise <html>, <head>, <body>) en nommant le fichier d'une extension XLS. Excel (en tout cas la version 2010 qui est installée) interprète parfaitement tout ce qui est dans une table comme une grille de données. D'ailleurs il est même possible d'y mettre du style.

    Petit exemple :

    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
    42
    <style type="text/css">
    <!--
    body {
    	background-color: #ECE9D8;
    }
    .titel {
    	font-weight: bold;
    	font-size: 22px;
    }
    .header {
    	font-size: 13px;
    	font-weight: bold;
    	color: #CCCCCC;
    	background-color: #A80329;
    }
    .contentData {
    	font-size: 12px;
    }
    br
    	{mso-data-placement:same-cell;}
     
    .green {
    	background-color: #009900;
    }
    .red {
    	background-color: #FF0000;
    }
    .yellow {
    	background-color: #FFCC00;
    }
    a {
    	text-decoration: none;
    }
    -->
    </style>
     
    <table cellpadding="0" cellspacing="0" border="1" bordercolor="#999999">
    <tr>
     <td colspan="31" class="titel"><span style="color: #A80329; font-size: 26px;">Report</td>
    </tr>
    ...... <!-- ici vienne de nombreuses autres lignes avec de nombreuses cellules, 31 pour être précis sur le nombre -->
    </table>
    Extrêmement pratique.
    Je n'ai pas testé d'ouvrir ça sur OpenOffice ou LibreOffice. Dans un milieu d'entreprise où les configuration des ordinateurs sont toutes les mêmes, c'est vraiment facile à gérer.

    Cordialement,
    Patrick
    Always code as if the guy maintaining your application is a violent psychopath!
    Site personnel sur la saga Final Fantasy : http://www.final-fantasy.ch

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Bonjour,

    Excel sépare automatiquement les données d'un fichier .csv dans des colonnes distinctes quand ce dernier est bien formaté. Le séparateur automatiquement reconnu par excel est ; et non ,
    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
    <?php
     
    $list = array (
       array('aaa', 'bbb', 'ccc', 'dddd'),
       array('123', '456', '789'),
       array('"aaa"', '"bbb"')
    );
     
    $fp = fopen('file.csv', 'w');
     
    foreach ($list as $fields) {
        fputcsv($fp, implode(';', $fields));
    }
     
    fclose($fp);
    ?>
    J'ai cette erreur :
    Warning: fputcsv() expects parameter 2 to be array, string given in I:\wamp2\www\xls\index2.php on line 12

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2006
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2006
    Messages : 985
    Points : 460
    Points
    460
    Par défaut
    int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    $list = array (
       array('aaa', 'bbb', 'ccc', 'dddd'),
       array('123', '456', '789'),
       array('"aaa"', '"bbb"')
    );
     
    $fp = fopen('file3.csv', 'w');
     
    foreach ($list as $fields) {
    	fputcsv($fp, $fields, ';');
    }
     
    fclose($fp);

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

Discussions similaires

  1. Générer un fichier Excel avec java
    Par osman.amine dans le forum Struts 1
    Réponses: 2
    Dernier message: 29/06/2007, 17h26
  2. [REPORTS 6i] Générer un fichier excel à partir de reports
    Par moneyinthebank dans le forum Reports
    Réponses: 7
    Dernier message: 07/03/2007, 14h13
  3. Générer un fichier excel
    Par anne-so dans le forum Modules
    Réponses: 3
    Dernier message: 25/04/2006, 14h42
  4. [Excel] Générer des fichiers Excel avec PHP et des données SQL
    Par MaTHieU_ dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 29/03/2006, 15h46
  5. Réponses: 4
    Dernier message: 02/05/2005, 20h25

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