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 :

Exporter un CSV avec caractères spéciaux pour Excel [Encodage]


Sujet :

Langage PHP

  1. #1
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut Exporter un CSV avec caractères spéciaux pour Excel
    Bonjour à tous,

    J'ai un souci. Je souhaite exporter des données au format CSV pour des clients. Le fichier est très bien lu par OpenOffice Calc sur mon linux, et il passe tout aussi bien sur le bloc-notes de Windows, mais dès que je l'ouvre avec Excel, c'est fini, les caractères spéciaux ne sont plus gérés et c'est le grand n'importe quoi. Quelqu'un a une idée de ce que je peux faire?

    Voilà mon script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    header("Pragma: public");
    header("Expires: 0"); // set expiration time
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: application/txt; charset=UTF-8");
    header('Content-Disposition: attachment; filename="' . $name . '.csv"');
    //header('Content-type: application/octet-stream');
    //$fp = fopen("php://output", 'w');
    foreach($data as $ligne) {
    	//fputcsv($fp, $ligne);
    	foreach($ligne as $value)
    		echo $value.',';
    	echo "\n";
    }
    Les lignes en commentaire correspondent à des alternatives que j'ai testé mais qui m'ont donné le même résultat final.

    Je sais qu'Excel utilise par défaut le format Windows125x, ou un truc similaire, mas même en faisant des trucs du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iconv("UTF-8", "Windows-1252", maData);
    et en virant l'entête disant que c'est de l'UTF-8, j'obtiens le même problème.

    A l'heure actuelle, je fais un utf8_encode sur toutes mes données dans la fonction d'export.

    J'ai presque envie de dire "pitié, sauvez ma chevelure" XD
    Merci d'avance à tous!
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    A l'heure actuelle, je fais un utf8_encode sur toutes mes données dans la fonction d'export.
    Est-ce que cela fonctionne ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Est-ce que cela fonctionne ?
    Non, justement. D'où mon incompréhension du problème.
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

  4. #4
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    et ta méthode pour créer un CSV n'est pas bonne non plus, pourtant t'éetait bien partis avec fputcsv, de plus ca par souvent d'une moauvaise habitude de l'utilisateur : sous Excel on ouvre pas un CSV mais on importe un CSV

  5. #5
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Va expliquer ça à un client lambda.
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

  6. #6
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par gwinyam Voir le message
    Va expliquer ça à un client lambda.
    si il attend de l'Excel c'est a toi de faire un fichier Excel, d'ailleurs qu'en t'ouvre directement un CSV y'a un message d'alerte, tu peux utiliser des lib comme PHPExcel, sinon Google Docs fait ca aussi en webservice

  7. #7
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    On préfère un CSV parce que certains clients veulent pouvoir l'utiliser directement dans leur SI sans avoir de conversions à faire.
    Et on ne passera pas par Google Docs, tout simplement parce que ce sont des données critiques et qu'il est bien évidemment hors de question de les faire passer par Google.

    Du coup, j'ai toujours mon problème moi.
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

  8. #8
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par gwinyam Voir le message
    On préfère un CSV parce que certains clients veulent pouvoir l'utiliser directement dans leur SI sans avoir de conversions à faire.
    Et on ne passera pas par Google Docs, tout simplement parce que ce sont des données critiques et qu'il est bien évidemment hors de question de les faire passer par Google.

    Du coup, j'ai toujours mon problème moi.
    Fait deux types d'export un xls et un csv.

  9. #9
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Fait deux types d'export un xls et un csv.
    Effectivement. D'ailleurs je vois que même Google propose un export CSV classique et un export CSV dit "pour Excel".
    On va revoir la stratégie mais ça saoule.
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

  10. #10
    Expert éminent sénior

    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
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par gwinyam Voir le message
    Effectivement. D'ailleurs je vois que même Google propose un export CSV classique et un export CSV dit "pour Excel".
    On va revoir la stratégie mais ça saoule.
    je compatis, en plus qu'en t'ouvre un CSV avec Excel il formate les champs, par exemple pour X raisons dans ton champs y'a : 03-12, lui il va formater ca en 3 Décembre ....

  11. #11
    Membre chevronné
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Points : 2 015
    Points
    2 015
    Par défaut
    La solution que j'adopte est de retirer tout caractères spéciaux. Pour les caractères spéciaux, rien de compliqué, pour les valeurs monétaires, j'utilise Zend_Currency, donc avec l'option display à SHORT_NAME, je n'ai pas de caractères spéciaux et ainsi de suite.
    Comparez la qualité et le prix du matériel de bricolage ou de maison avant d'acheter : MatosMaison
    Le bouton ne masse pas les pieds, mais ça aide la communauté.

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

Discussions similaires

  1. [XL-MAC 2011] exporter un CSV avec inversion jour et mois pour google calendar
    Par Holycat dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 06/06/2015, 23h22
  2. Réponses: 1
    Dernier message: 24/06/2013, 23h27
  3. recupérer GET avec caractères spéciaux
    Par masseur dans le forum Langage
    Réponses: 11
    Dernier message: 03/01/2006, 12h37
  4. [RegEx] chaîne de caractères avec caractères spéciaux
    Par Kerod dans le forum Langage
    Réponses: 9
    Dernier message: 25/12/2005, 02h40
  5. Réponses: 3
    Dernier message: 11/10/2004, 18h26

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