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 :

Export Excel caractères spéciaux


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 48
    Points
    48
    Par défaut Export Excel caractères spéciaux
    Bonjour à tous,
    j'ai le code suivant qui doit me permettre d'exporter un tableau vers Excel :
    Code PHP : 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
    <?php
    ob_clean();
    $requete="select * from table;
    $resultat=mysql_query($requete) or die ('ERREUR'.mysql_error());
    header("Content-type:application/vnd.ms-excel");
    header("Content-disposition:attachment; filename=fichier.xls");	
    
    $excel=" ";
    $excel .="colonne1 \t colonne2 \t ... \n";
    
    while ($ligne=mysql_fetch_assoc($resultat))
    {
    $v1=MySQL_real_escape_string($ligne['col1']);
    $v2=MySQL_real_escape_string($ligne['col2']);
    ...
    
    $excel .="$v1 \t $v2 \t ... \n";
    }
    
    print$excel;
    exit;	
    ?>
    Ce script fonctionne mais les accents ne s'affichent pas correctement.
    J'ai donc essayé de rajouter au début (après le ob_clean()):
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"<HTML><HEAD><META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"></HEAD><BODY>";

    et à la fin :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo"</BODY></HTML>";

    mais lorsque j'ouvre le fichier, j'ai un message d'erreur 'contenu de la cellule trop volumineux'. Il semble que l'ensemble de mon tableau soit dans une seule et même cellule.
    J'ai également essayé d'ajouter
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    content-type: text/html; charset=utf-8
    dans mon header, mais les accents ne s'affichent toujours pas

  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
    Ce que tu fais n'est pas un fichier xls mais un fichier de type CSV avec une tabulation en séparateur.
    Si tu veux un fichier XLS, utilise PHPExcel ; si tu veux rester sur un CSV, utiliser le point-virgule comme séparateur et nomme bien ton fichier .csv.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    Je sais pour le csv, la sortie me convient. J'arrivais à avoir les accents quand j'utilisais une nouvelle page pour générer le fichier, ce n'est pas possible sans créer de nouvelle page?

    e/ quand j'utilise echo"<HTML>... comme posté ci-dessus, j'ai bien les accents mais tout est dans une seule cellule

  4. #4
    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
    Une fichier CSV avec une extension XLS et de vrais morceaux de HTML à l'intérieur ... tu travailles dans les surgelés toi ?

    Pour la simple question des accents, vérifie l'encodage de ton fichier .php
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    J'ai mis le fichier en .csv et enlevé le HTML. Je passe mon tableau sur une nouvelle page avec une variable session mais je n'ai toujours pas d'accents dans le csv généré. ma page est encodé en utf-8 sans bom.
    Code PHP : 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
    <?php
    session_start();
    $tabid=$_SESSION['id'];
    $listeid = "'".implode("', '", array_map('mysql_real_escape_string', $tabid))."'";
     
    header("Content-type:text/csv ; charset=utf-8");
    header("Content-disposition:attachment;filename=ExportProjet.csv");
     
    include("connexion.php");
    $requete="select * from table WHERE Id IN ({$listeid})";
    $resultat=mysql_query($requete) or die ('ERREUR'.mysql_error());
     
    $csv=" ";
    $csv .="TitreCol1 \t TitreCol2 \t ... \n";
     
    while ($ligne=mysql_fetch_assoc($resultat)){
    $c1=$ligne['Colonne1'];
    $c2=$ligne['Colonne2'];
    ...
     
    $csv .="$c1 \t $c2 \t ... \n";
    }
     
    print$csv;
    exit;
     ?>

  6. #6
    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
    ajoute
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("SET NAMES 'utf8'");
    après ta connexion.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2012
    Messages : 90
    Points : 48
    Points
    48
    Par défaut
    J'ai ajouté la ligne suivante avant le print et ça fonctionne :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    echo chr(255).chr(254).mb_convert_encoding( $csv, 'UTF-16LE', 'UTF-8');

    merci pour ton aide sabotage et désolé pour mon amateurisme

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

Discussions similaires

  1. [WebI Xi3] Export Excel - caractères # apparaissant aléatoirement
    Par Invité dans le forum Débuter
    Réponses: 5
    Dernier message: 08/06/2011, 09h14
  2. [Encodage] Exporter un CSV avec caractères spéciaux pour Excel
    Par gwinyam dans le forum Langage
    Réponses: 10
    Dernier message: 22/02/2011, 11h44
  3. Réponses: 0
    Dernier message: 27/04/2010, 17h32
  4. Caractères Spéciaux à exporter dans Word
    Par uskiki85 dans le forum Access
    Réponses: 1
    Dernier message: 04/04/2007, 15h08
  5. Caractere spéciaux export excel
    Par inge2007 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 21/02/2007, 16h11

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