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 :

Export csv Excel UTF-8 [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut Export csv Excel UTF-8
    slt à tous,
    je me tourne vers vous pour un petit blem.

    j'ai un petit bout de code qui exporte une bdd en csv, jusqu'a la pas de blem particulier. Le seul souci c'est que la bdd et en utf-8 et donc dans excel cela créer des problème avec les accents et caractères spéciaux.

    je vous met 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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    // Connexion MySQL
    // Obligatoire pour la suite !
     
    // la variable qui va contenir les données CSV
    $outputCsv = '';
     
    // Nom du fichier final
    $fileName = 'export-stocklist.csv';
     
    $requete = "SELECT * FROM catalogue ORDER BY ordre ASC";
    $sql = mysql_query($requete);
    if(mysql_num_rows($sql) > 0)
    {
        $i = 0;
     
        while($Row = mysql_fetch_assoc($sql))
        {
            $i++;
     
            // Si c'est la 1er boucle, on affiche le nom des champs pour avoir un titre pour chaque colonne
            if($i == 1)
            {
                foreach($Row as $clef => $valeur)
                    $outputCsv .= trim($clef).';';
     
                $outputCsv = rtrim($outputCsv, ';');
                $outputCsv .= "\n";
            }
     
            // On parcours $Row et on ajout chaque valeur à cette ligne
            foreach($Row as $clef => $valeur)
                $outputCsv .= trim($valeur).';';
     
            // Suppression du ; qui traine à la fin
            $outputCsv = rtrim($outputCsv, ';');
     
            // Saut de ligne
            $outputCsv .= "\n";
     
        }
     
    }
    else
        exit('Aucune donnée à enregistrer.');
     
    // Entêtes (headers) PHP qui vont bien pour la création d'un fichier Excel CSV
    header("Content-disposition: attachment; filename=".$fileName);
    header("Content-Type: application/force-download");
    header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
    header("Pragma: no-cache");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
    header("Expires: 0");
     
    echo $outputCsv;
    exit();
    quelle est la soluce pour que l'export se fasse de façon clin en csv ?
    Merci d'avace de votre aide.
    @+

  2. #2
    Membre éclairé
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Juin 2007
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2007
    Messages : 70
    Par défaut
    Salut spawns,

    Pourquoi ne pas utiliser la fonction utf8_decode ?

  3. #3
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    oui,
    mais ou la placer dans mon code ?

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pour écrire un CSV c'est avec fputcsv, je te déconseille aussi de tout mettre ça dans une chaine

  5. #5
    Membre éclairé Avatar de spawns
    Homme Profil pro
    Inscrit en
    Juillet 2004
    Messages
    558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 558
    Par défaut
    la cela fonctionne,
    j'ai juste ce petit soucis avec utf-8
    je pense que cela vaut le coup de tenter avec utf8_decode mais je ne vois pas comment et ou l’insérer dans mon code.

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par spawns Voir le message
    la cela fonctionne,
    j'ai juste ce petit soucis avec utf-8
    je pense que cela vaut le coup de tenter avec utf8_decode mais je ne vois pas comment et ou l’insérer dans mon code.
    oui ça fonctionne mais ce n'est pas du-tout la bonne méthode, de plus ton code prend inutilement de la ressource, de plus dans Excel on ouvre pas un CSV mais on importe un CSV, si tu veux faire un fichier Excel utilise PHPExcel

  7. #7
    Invité de passage
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2009
    Messages : 1
    Par défaut
    pour corriger votre encodoge,
    il faut juste mettre ce ligne de code : $outputCsv = utf8_decode($outputCsv); avant cet ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header("Content-disposition: attachment; filename=".$fileName);

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

Discussions similaires

  1. export dbgrid (Excel, CSV, Clipboard)
    Par The Jos dans le forum Contribuez
    Réponses: 4
    Dernier message: 09/01/2011, 11h53
  2. Exporter de excel en csv
    Par Dan_pa dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/05/2009, 21h34
  3. Réponses: 3
    Dernier message: 26/01/2009, 10h48
  4. [CSV] Format des données exportées dans Excel
    Par magsmile dans le forum Langage
    Réponses: 6
    Dernier message: 07/09/2007, 17h46
  5. Exporter fichier Excel en .csv
    Par pierre.coudert dans le forum Windows
    Réponses: 7
    Dernier message: 27/02/2007, 13h45

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