Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1622 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  saut de ligne dans un excel créé en php

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

saut de ligne dans un excel créé en php

n°1311148
domri64
Posté le 22-02-2006 à 08:34:07  profilanswer
 

Bonjour à tous.
Voici mon problème :
En php, je récupère le contenu d'une table mysql, je crée un tableau html avec ce contenu. Je mets le type mime excel.
Le tableau s'ouvre dans le navigateur en Excel.
Le problème : les sauts de ligne en php sont \n mais excel ne les interprete pas.
Je cherche un moyen de remplacer \n par des sauts de ligne excel.
J'ai déjà testé :
 - remplacer \n par <br> ou <br/> : ça crée une sous cellule (sans bordure) pour chaque <br>, mais je voudrais l'affichage dans une seule cellule donc ça ne marche pas
 - remplacer \n par CAR(10) : apparemment, CAR(10) ne fonctionne que dans les formules, or là, il faut mettre le saut de ligne directement dans la cellule.
 
En gros, je voudrais faire des "alt-entrée", mais dans le code, à partir de php...
Quelqu'un aurait une idée ?

mood
Publicité
Posté le 22-02-2006 à 08:34:07  profilanswer
 

n°1311271
soju
One shot !
Posté le 22-02-2006 à 11:12:13  profilanswer
 

domri64 a écrit :

En php, je récupère le contenu d'une table mysql, je crée un tableau html avec ce contenu. Je mets le type mime excel.
Le tableau s'ouvre dans le navigateur en Excel.

ha, excel peut lire un tableau html ?
sinon j'ai eu ce problème en csv, et je l'ai résolu avec \n + délimiteurs : par exemple "blablabla\nblabla"
 

n°1311296
domri64
Posté le 22-02-2006 à 11:29:12  profilanswer
 

Excel sait lire et créer du html, oui. Donc il est à priori facile d'écrire un tableau html et de l'ouvrir dans Excel.
Sauf que les \n, \r, \n\r, etc. ne sont pas interpretés par Excel (en csv oui, mais y'a pas de formatage).
La seule solution que j'ai trouvé consiste à remplacer les \n par des <br>, mais le résultat est pas terrible (essayez de créer un tableau multiligne en html, dans les cellules, mettez du texte avec des <br>, et ouvrez ça dans excel, vous verrez le résultat)
On peut aussi faire une concaténation en remplaçant les \n par CAR(10) : =CONCATENER("montexte";CAR(10);"lasuitedemontexte" ) mais cette solution a des limites (mes cellules contiennent parfois plus de 2000 caracteres, ça ne passe pas en concaténation).
Le problème, comme je le dis sans mon premier message, est que CAR(10) ne fonctionne apparemment que dans les formules, pas dans la cellule elle-meme.
En PHP, j'ai ça :  
$mavariable=str_replace("\n", "quelquechose", $mavariable) où il faudrait remplacer "quelquechose" par un code qui permette d'afficher $mavariable dans une cellule excel avec les sauts de ligne. (pas "\n", "\r", "\n\r", "<br>", "<br/>", "CAR(10)" ), du moins pas sous cette forme, ça ne marche pas.
Y'a vraiment aucune solution ?


Message édité par domri64 le 22-02-2006 à 11:31:21
n°1498950
sielfried
Posté le 04-01-2007 à 16:43:40  profilanswer
 

Essaie :
 
<style type="text/css">  
  br {mso-data-placement: same-cell}  
</style>
 
combiné avec un str_replace de \n vers <br />.

n°1573829
le_marsoin
Posté le 12-06-2007 à 15:34:40  profilanswer
 

Salut j'ai trouvé la solution :
 
$nouveau_texte=str_replace("\n","&#10;",$ancien_texte);
 
Ps : pour generer de l'excel via PHP, utiliser le format XML d'excel (enregistrer sous ->XML). Y'a pas mal de doc sur le sujet, bon courage. Michel

n°1573839
rufo
Pas me confondre avec Lycos!
Posté le 12-06-2007 à 15:40:57  profilanswer
 

et t'as essayé avec CAR(13)?

n°1605978
bert011
Posté le 29-08-2007 à 18:39:19  profilanswer
 

il suffit d'utiliser la fonction chr() en passant le code du retour chariot en ASCII, soit chr(10) !


Message édité par bert011 le 29-08-2007 à 18:39:40
n°2136641
rakim971
Posté le 15-04-2012 à 07:07:18  profilanswer
 

l'idée est de travailler sur différent cas si la longueur de la chaine est superieur a 90 caractere nous devons agrandir la case  
 
un morceau de code ^^  
 
$cell=$sheet->Range('A29')->RowHeight = 35.0 ;
  $cell=$sheet->Range('A29');
  $longueurdonnéeactivite=strlen($_GET['Iactivite']);
        $cell->value="Activité : \n".$_GET['Iactivite'];
  if ($longueurdonnéeactivite<60){$cell->value="Activité : ".$_GET['Iactivite'];}
  else{
  $cell->value="Activité : \n".$_GET['Iactivite'];
  if($longueurdonnéeactivite>60 and $longueurdonnéeactivite<180){  
  $cell=$sheet->Range('A29')->RowHeight = 50.0 ;  
  }
  if($longueurdonnéeactivite>180 and $longueurdonnéeactivite<270){  
  $cell=$sheet->Range('A29')->RowHeight = 75.0 ;  
  }
  if($longueurdonnéeactivite>270 and $longueurdonnéeactivite<360){  
  $cell=$sheet->Range('A29')->RowHeight = 100.0 ;  
  }}


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  saut de ligne dans un excel créé en php

 

Sujets relatifs
Excel ajouter une nouvelle ligne automatiquementPB excecution d'une ligne de commande DOS
ouvrir dans Excel un tableau html crée en PHPCommerce en ligne : recevoir un paiement
Lire un fichier ExcelOutils de catalogue en ligne
[C# - GDI] Rendre une suite de ligne transparente[ java ] comment créé un fichier + d'autes question dans le futur..
Plus de sujets relatifs à : saut de ligne dans un excel créé en php


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR