Export Excell en php : mettre plusieurs styles sur mes colonnes

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Export Excell en php : mettre plusieurs styles sur mes colonnes

Re: Export Excell en php : mettre plusieurs styles sur mes colonnes

par @rthur » 13 févr. 2025, 21:16

Fais un var_dump($rowdata, $rowstyle) pour voir ce que tu as mis dans les 2 tableaux que tu as construits et être sûr que ça correspond à l'exemple de la doc.

Quand le fichier ne s'ouvre pas, c'est probablement que tu as une erreur PHP qui s'affiche et qui corromp le fichier au format XSLX, dans ce cas ouvre le fichier xslx avec un éditeur de texte type bloc-notes ou sublime text pour voir si tu n'y trouverais pas une erreur PHP

Re: Export Excell en php : mettre plusieurs styles sur mes colonnes

par petite fée » 12 févr. 2025, 14:26

up..?

Export Excell en php : mettre plusieurs styles sur mes colonnes

par petite fée » 10 févr. 2025, 15:33

Bonjour à tou(te)s,

je travaille sur mon export excell, et j'ai encore un souci :
- je n'arrive pas à faire passer plusieurs styles.
J'ai, d'un côté, mon fichier simplifié qui affiche 4 colonnes, avec la case 3 colorée.
De l'autre, j'ai l'exemple de PHP_XLSXWriter avec la largeur et hauteur à 40 px.
Mais je n'arrive pas à coder mon php pour que le tableau excell soit à la fois coloré, ET avec la largeur de cellule définie par mon code.
Soit mon code n'est pas interprété, soit j'ai un message d'erreur à l'ouverture, "mauvais format".

mon code :
$rowdata=array();
$rowstyle=array();

$i=5;
$a=0;

while($a<$i){
	
	$rowdata[]=$a;
		if ($a==2){
		$rowstyle[]=['fill'=>'#cff'];
		} else {
		$rowstyle[]='';
		}
	
	$a++;
	
}

$writer->writeSheetRow('Sheet1', $rowdata, $rowstyle);
$writer->writeToStdOut();

L'exemple :
$header = array(
	"col1"=>"string",
	"col2"=>"string",
	"col3"=>"string",
	"col4"=>"string",
);

$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', $header, $col_options = ['widths'=>[40,40,40,40]] );
$writer->writeSheetRow('Sheet1', $rowdata = array(1,2,3,4), $row_options = ['height'=>40,40,40,40] );
$writer->writeToStdOut();
Quelques essais :

j'essaye d'afficher mes cases avec la hauteur demandée -> la couleur fonctionne, mais pas la hauteur de la cellule.
$writer->writeSheetRow('Sheet1', $rowdata, $rowstyle, $row_options = ['height'=>40] );
J'essaye de concaténer les styles : le fichier ne s'ouvre pas, format incorrect
$writer->writeSheetRow('Sheet1', $rowdata, $rowstyle.$row_options = ['height'=>40] );
J'essaye de créer une première cellule vide, qui n'est là que pour donner la hauteur height. Le fichier ne s'ouvre pas.

$rowdata[]="";
$rowstyle[]=['height'=>40];

while($a<$i){
	
	$rowdata[]=$a;
		if ($a==2){
		$rowstyle[]=['fill'=>'#cff'];
		} else {
		$rowstyle[]='';
		}
	
	$a++;
	
}
$writer->writeSheetRow('Sheet1', $rowdata, $rowstyle);
Avec cette syntaxe il s'ouvre, mais la hauteur n'est pas interprétée
$rowstyle[]=['height'=>'40'];
Et je passe les autres tests... Pourriez-vous m'éclairer ?

Merci !