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, petit problème


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Export Excel, petit problème
    Je m'explique, j'ai une base de donnée, et je l'alimente via un formulaire, et dedans j'ai un textaera, pour l'envoyer sur ma base de donnée, je lui applique les fonction, htmlentities() et nl2br(). Jusque la tout vas bien, pour récuperer ensuite ces données, j'utilise donc la fonction html_entity_decode(). L'affichage est niquel, en fait le probleme vient du fait, qu'ensuite, j'exporte ces données sur une feuille excel. J'obtient parfaitement mes données, le seul souci vient du fait, que pour les retours chariot sur excel, il m'affiche un petit carré (tout en allant a la ligne...) . J'ai donc un peu fouillé sur le forum, et j'ai donc compris qu'il falais remplacer, le retour chariot, par " chr(10) ".

    J'ai donc fait un petit test :
    $text = 'blablablabla'.chr(10);

    L'affichage sous Excel est parfait. Bon la vous allez me dire et alors? qu'elle est le probleme? lol.
    Il vien du fait que j'utilise la fonction nl2br pour l'envoi a ma base de donnée, alors je voulais savoir, lorsqu'ensuite je recupere ces données, la fonction nl2br , qu'est ce qu'elle rajoute en fin de chaine ? un "<br>", un retour charriot ?
    En clair faire en sorte que les retours chariot qu'elle retourne sois transformé en chr(10), pour mon affichage sous Excel.
    J'espere avoir été clair, merci !

    edit : J'ai regardé apres un nl2br, la fonction renvoi un "<br />" en fin de ligne,
    comment faire pour la remplacer par un chr(10) ? merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 87
    Points : 102
    Points
    102
    Par défaut
    bonjour,

    tout simplement avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    str_replace('<br />', chr(10));
    par ailleurs je te conseille plutôt d'enregistrer les données dans la base en appliquant seulement la fonction addslashes qui échappe la chaîne de caractères.
    Quand tu récupère la valeur de ta chaîne applique lui la fonction strip_slashes puis tout traitement supplémentaire (comme htmlentities et nl2br).

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Salut,

    Alors la je commence a devenir fou. J'ai encore farfouillé et fait plein de test, j'en suis arrivé a faire un fonction

    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
     
     function excel_format($texte)
    {
      $texte = html_entity_decode($texte);
     
      if (preg_match("#.(\\r\\n).#","$texte"))
            {
            $texte = str_replace("\r\n",chr(13).chr(10),$texte);
            }
      if (preg_match("#.(\\n).#","$texte"))
           {
           $texte = str_replace("\n",chr(10),$texte);
           }
      if (preg_match("#.(\\r).#","$texte"))
           {
           $texte = str_replace("\r",chr(13),$texte);
           }
      $texte = stripslashes(trim($texte));
     
      return $texte;
    }
    Alors j'ai plus mon probleme de petit carré, si dans mon str_replace, je remplace par rien ( ce qui semble logique). Mais quand je remplace par chr(10) ou chr(13) ou les deux, bah non ca marche pas, ca me refait le bug.
    Lorsque je regarde le code source de la page obtenu, le fichier texte obtenue est formatée comme je le veux, mais dans Excel ya pas moyen. Le seul truc que j'arrive a faire c'est d'avoir les info de ma cellule par gros bloc. Mais vu que dans chaque cellule, il me faut des saut de ligne, bah j'y arrive pas. Alors si quelqu'un voulais bien m'aidé !!!

  4. #4
    Futur Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bon en cherchant, j'ai fait deux fonction, elle permet lorsque vous avez un texte qui fait plusieurs paragraphe, de l'exporter sous excel sans probleme de "petit carré" a l'affichage...
    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
     
     
     function excel_format($texte)
    {
      $texte = html_entity_decode($texte);
     
      if (preg_match("#.(\\r\\n).#","$texte"))
            {
            $texte = str_replace("\r\n","|separation|",$texte);
            }
      if (preg_match("#.(\\n).#","$texte"))
           {
           $texte = str_replace("\n","|separation|",$texte);
           }
      if (preg_match("#.(\\r).#","$texte"))
           {
           $texte = str_replace("\r","|separation|",$texte);
           }
      $texte = stripslashes(trim($texte));
     
      return $texte;
    }
     
    function ligne($texte)
    {
      $texte_modif = excel_format($texte);
      $texte_modif_excel = explode("|separation|",$texte_modif);
      $nb_ligne = count($texte_modif_excel);
      for($j=0;$j<$nb_ligne;$j++)
             $modif_final .= $texte_modif_excel[$j].chr(10);
      return $modif_final;
    }

    Pour l'utiliser : $texte_modif = ligne($texte) avec $texte qui est votre paragraphe.

    Voila si ca peut aidé certain, moi ca ma cassé la tete lol... Le code a surrement besoin de pas mal d'amélioration, mais il fonctionne et pour ma part il me suffit ( je dis ca pour ceux qui sont mauvaise langue lol).

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

Discussions similaires

  1. [MySQL] Export Excel simple - problème accents
    Par Paul75 dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 08/10/2011, 11h07
  2. [VBA-Excel] Petit problème avec les formulaires
    Par ash_rmy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/08/2006, 09h22
  3. Problème export excel
    Par eddyG dans le forum Access
    Réponses: 4
    Dernier message: 04/07/2006, 18h42
  4. Problème de sauts de lignes lors d'un export Excel
    Par guidav dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2006, 14h58
  5. [Tableaux] Problème export excel
    Par la fouine dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2006, 07h32

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