yacknick | Bonjour, j'ai crée un script PHP qui grâce à l'API PHPExcel me permet de créer un fichier contenant le résultat d'une requête SQL(un export pour faire plus simple). Mais je rencontre deux difficultées :
la première est que je voudrais colorer en orange avec écriture orange (qui devient "invisible" ) les cellules avec une valeur >0 L'écriture dans les du tableau est mise en blanc et ainsi les 0 deviennent aussi "invisibles".
et en second je génère sur une feuille excel cinq tableaux qui représente les 5 jours de la semaine. Pour créer les tableaux de la semaine je fais comme ça :
Code :
- $ligne1= 3;//correspond à la ligne où la formule est écrite
- $ligne2=$ligne1+3;
- $a=2;//correspond à la ligne où la formule doit chercher la chaine de caractère
- for ($i=0; $i <5 ; $i++) {
- while($data2 = $req3->fetch(PDO::FETCH_ASSOC)){
- $colonne = 'A';//correspond à la colonne où la liste d'identifiant est écrite
- $colonne2 = 'C';//correspond à la colonne où la formule est écrite
- $colonne3='C';
- $colonne4='B';
- foreach($data2 as $value){
- $sheet8->setCellValue($colonne.$ligne1, $value);//liste des identifiant
- $sheet8->setCellValue('B'.$ligne1,'=COUNTIF(\'tout à fait_reg\'!$Q'.$a.',"* "&B$1&"*" )',PHPExcel_Cell_DataType::TYPE_FORMULA);
- $sheet8->setCellValue($colonne.$ligne2, $value);//liste des identifiant
- $sheet8->setCellValue('B'.$ligne2,'=COUNTIF(\'tout à fait_reg\'!$Q'.$a.',"* "&B$1&"*" )',PHPExcel_Cell_DataType::TYPE_FORMULA);
- for ($i=0; $i <=34 ; $i++) {
- $sheet8->setCellValue( $colonne2++.$ligne1,'=IF(COUNTIF($B'.$ligne1.':'.$colonne4.$ligne1.',2)=1,0,COUNTIF(\'tout à fait_reg\'!$R'.$a.',"* "&'.$colonne3++.'1&"*" )+'.$colonne4++.$ligne1.')',PHPExcel_Cell_DataType::TYPE_FORMULA);
- }
- $colonne2++;
- }
- $ligne1++;
- $ligne2++;
- $a++;
- }
- }
- //mardi
- $ligne2=$ligne1+3;
- $b = 2;
- while($data2 = $req4->fetch(PDO::FETCH_ASSOC )){
- $colonne = 'A';//correspond à la colonne où la liste d'identifiant est écrite
- $colonne2 = 'C';//correspond à la colonne où la formule est écrite
- $colonne3='C';
- $colonne4='B';
- foreach($data2 as $value){
- $sheet8->setCellValue('B'.$ligne2,'=COUNTIF(\'tout à fait_reg\'!$Q'.$b.',"* "&B$1&"*" )',PHPExcel_Cell_DataType::TYPE_FORMULA);
- $sheet8->setCellValue($colonne.$ligne2, $value);
- for ($i=0; $i <=34 ; $i++) {
- $sheet8->setCellValue( $colonne2++.$ligne2,'=IF(COUNTIF($B'.$ligne2.':'.$colonne4.$ligne2.',2)=1,0,COUNTIF(\'tout à fait_reg\'!$R'.$b.',"* "&'.$colonne3++.'1&"*" )+'.$colonne4++.$ligne2.')',PHPExcel_Cell_DataType::TYPE_FORMULA); }
- $colonne2++;
- }
- $ligne2++;
- $b++;
- }
- $ligne3=$ligne2+3;
- $c = 2;
- while($data2 = $req5->fetch(PDO::FETCH_ASSOC )){
- $colonne = 'A';//correspond à la colonne où la liste d'identifiant est écrite
- $colonne2 = 'C';//correspond à la colonne où la formule est écrite
- $colonne3='C';
- $colonne4='B';
- foreach($data2 as $value){
- $sheet8->setCellValue('B'.$ligne3,'=COUNTIF(\'tout à fait_reg\'!$Q'.$c.',"* "&B$1&"*" )',PHPExcel_Cell_DataType::TYPE_FORMULA);
- $sheet8->setCellValue($colonne.$ligne3, $value);
- for ($i=0; $i <=34 ; $i++) {
- $sheet8->setCellValue( $colonne2++.$ligne3,'=IF(COUNTIF($B'.$ligne3.':'.$colonne4.$ligne3.',2)=1,0,COUNTIF(\'tout à fait_reg\'!$R'.$c.',"* "&'.$colonne3++.'1&"*" )+'.$colonne4++.$ligne3.')',PHPExcel_Cell_DataType::TYPE_FORMULA); }
- $colonne2++;
- }
- $ligne3++;
- $c++;
- }
- $ligne4=$ligne3+3;
- $d=2;
- while($data2 = $req6->fetch(PDO::FETCH_ASSOC)){
- $colonne = 'A';
- $colonne2 = 'B';
- $colonne3='C';
- $colonne4='B';
- foreach($data2 as $value){
- $sheet8->setCellValue('B'.$ligne4,'=COUNTIF(\'tout à fait_reg\'!$Q'.$d.',"* "&B$1&"*" )',PHPExcel_Cell_DataType::TYPE_FORMULA);
- $sheet8->setCellValue($colonne.$ligne4, $value);
- for ($i=0; $i <=34 ; $i++) {
- $sheet8->setCellValue( $colonne2++.$ligne4,'=IF(COUNTIF($B'.$ligne4.':'.$colonne4.$ligne4.',2)=1,0,COUNTIF(\'tout à fait_reg\'!$R'.$d.',"* "&'.$colonne3++.'1&"*" )+'.$colonne4++.$ligne4.')',PHPExcel_Cell_DataType::TYPE_FORMULA);
- }
- $colonne2++;
- }
- $ligne4++;
- $d++;
- }
- $ligne5=$ligne4+3;
- $e=2;
- while($data2 = $req7->fetch(PDO::FETCH_ASSOC)){
- $colonne = 'A';//correspond à la colonne où la liste d'identifiant est écrite
- $colonne2 = 'C';//correspond à la colonne où la formule est écrite
- $colonne3='C';
- $colonne4='B';
- foreach($data2 as $value){
- $sheet8->setCellValue('B'.$ligne5,'=COUNTIF(\'tout à fait_reg\'!$Q'.$e.',"* "&B$1&"*" )',PHPExcel_Cell_DataType::TYPE_FORMULA);
- $sheet8->setCellValue($colonne.$ligne5, $value);
- for ($i=0; $i <=34 ; $i++) {
- $sheet8->setCellValue( $colonne2++.$ligne5,'=IF(COUNTIF($B'.$ligne5.':'.$colonne4.$ligne5.',2)=1,0,COUNTIF(\'tout à fait_reg\'!$R'.$e.',"* "&'.$colonne3++.'1&"*" )+'.$colonne4++.$ligne5.')',PHPExcel_Cell_DataType::TYPE_FORMULA);
- }
- $colonne2++;
- }
- $ligne5++;
- $e++;
-
- }
|
et je voudrais faire en sorte qu'avec une seule boucle j'obtienne la même chose. Je précise que les req3,4,5,6,7 sont les même car si j'utilise la même requête pour chaque tableaux le 1er tableau s'affiche correctement mais pour les suivant je n'arrive pas afficher autre chose que la dernière valeur de la table. Et je dois faire ces cinq tableaux six fois donc vous imaginez bien mon code est lourd à exécuter. Est-ce possible ? Merci d'avance.
Cordialement yacknick. |