Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/03/2007, 15h13   #1
Invité de passage
 
Inscription : décembre 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 6
Points : 3
Points : 3
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
olkabil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/03/2007, 18h33   #2
Membre habitué
 
Inscription : mars 2007
Messages : 87
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2007
Messages : 87
Points : 109
Points : 109
bonjour,

tout simplement avec

Code :
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).
supergogol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2007, 15h45   #3
Invité de passage
 
Inscription : décembre 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 6
Points : 3
Points : 3
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 :
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é !!!
olkabil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 09h36   #4
Invité de passage
 
Inscription : décembre 2006
Messages : 6
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 6
Points : 3
Points : 3
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 :
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).
olkabil est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h00.


 
 
 
 
Partenaires

Hébergement Web