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 :

PHP formatage excel


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut PHP formatage excel
    Bonjour,

    j'utilise le bout de code suivant:
    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
     
    //Requete SQL
     $query = "SELECT * FROM matable WHERE root = '$root'";
     $result = mysql_query($query) or die(mysql_error());
     
    // Entêtes des colones dans le fichier Excel
     $excel.="\n DATA_01\t DATA_02\t DATA_03\t DATA_04\t DATA_05\t DATA_05\t \n";
     
    //Les resultats de la requette
     while($row = mysql_fetch_array($result)) {
             $excel.= "$row[data_01]\t $row[data_02]\t $row[data_03]\t  $row[data_04]\t $row[data_05]\t $row[data_06]\t \n";
         } 
     header("Content-type: application/vnd.ms-excel");
     header("Content-disposition: attachment; filename=$FileName.xls");
     print $excel;
     exit;
    Comment (sans utiliser pear) est-il possible de forcer une largeur de colonne en fonction du nombre maximum de caratères.

  2. #2
    Membre Expert
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Par défaut
    nan. Et ce que tu fais est mal: tu fabriques un fichier CSV et tu le fais passer pour de l'excel "xls"

    Soit tu généres un vrai excel en utilisant PHPExcel soit tu assumes ton CSV.

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Tu veux faire quoi ? Créer un fichier compatible exel et le proposer en téléchargement ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2012
    Messages
    112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux

    Informations forums :
    Inscription : Avril 2012
    Messages : 112
    Par défaut
    je voudrais passer dans le code Php, la largeur des colonnes du tableur en fonction du nombre de caractères.

    Lors du téléchargement de mon .xls/.csv la largeur des colonnes semble être de 20, je voudrais que cette largeur s'adapte au nombre de caractères, c'est possible via une library Pear, mais dans mon cas j'ai juste ce paramètre à modifier, je voudrais éviter d'installer le package.

    @gene69, Pourquoi mal ? le fichier généré réponds à ma demande on peux même y ajouter des calculs...

  5. #5
    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
    Tu as beau lui donner un extension .xls, ton fichier reste un fichier csv, c'est à dire des données brutes sans mise en forme.

    Si tu veux pouvoir faire une mise en forme, il faut produire un vrai fichier au format Excel et utiliser par exemple PHPExcel.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    ça va pas être possible je pense car tu génère l'équivalent d'un fichier CSV, et par définition c'est sans formatage.

    EDIT : ah oui déjà dit (grilled).

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 415
    Par défaut
    Citation Envoyé par Loupita Voir le message
    @gene69, Pourquoi mal ? le fichier généré réponds à ma demande on peux même y ajouter des calculs...
    gene69 apportera peut-être d'autres précisions mais sur le principe tu fais un fichier qui a le désavantage d'un CSV (pas de formatage) sans en avoir tous les avantages car il n'est pas correctement formaté en tant que fichier CSV.
    Autant faire un "vrai fichier CSV" avec les fonctions prévues pour cela par exemple "fputcsv". On trouve d'ailleurs dans la doc de cette fonction, une fonction toute prête dans les exemples, ce qui donne avec une légère adaptation pour spécifier le délimiteur :
    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
    43
    <?php 
    function query_to_csv($db_conn, $query, $filename, $delimiter = ',', $attachment = false, $headers = true) 
    {
     
            if($attachment) {
                // send response headers to the browser
                header( 'Content-Type: text/csv' );
                header( 'Content-Disposition: attachment;filename='.$filename);
                $fp = fopen('php://output', 'w');
            } else {
                $fp = fopen($filename, 'w');
            }
     
            $result = mysql_query($query, $db_conn) or die( mysql_error( $db_conn ) );
     
            if($headers) {
                // output header row (if at least one row exists)
                $row = mysql_fetch_assoc($result);
                if($row) {
                    fputcsv($fp, array_keys($row), $delimiter);
                    // reset pointer back to beginning
                    mysql_data_seek($result, 0);
                }
            }
     
            while($row = mysql_fetch_assoc($result)) {
                fputcsv($fp, $row, $delimiter);
            }
     
            fclose($fp);
    }
     
     
    // Using the function
    $sql = "SELECT * FROM table";
    // $db_conn should be a valid db handle
     
    // output as an attachment (';' comme délimiteur pour les fichiers français)
    query_to_csv($db_conn, $sql, "test.csv", ';', true);
     
    // output to file system
    // query_to_csv($db_conn, $sql, "test.csv", ';', false); 
    ?>
    Avec ça tu as une fonction générique. Cela ne répond pas à ta question initiale mais au moins tu as un CSV correct.

Discussions similaires

  1. Manipuler excel avec php Formatage , courbes
    Par abdelkarim_1987 dans le forum Langage
    Réponses: 1
    Dernier message: 15/07/2013, 09h49
  2. [Excel] PHP et Excel
    Par gregal dans le forum Bibliothèques et frameworks
    Réponses: 19
    Dernier message: 05/05/2006, 16h26
  3. [Librairies] générer un .csv en php pour excel
    Par allowen dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2005, 16h40
  4. [PEAR][Spreadsheet] PHP/EXPORT EXCEL : nombre de formats de cellule différents !
    Par joe_le_mort dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 27/10/2005, 17h21

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