Définir la couleur de la cellule d'arrière-plan dans PHPExcel


93

Comment définir une couleur spécifique pour la cellule active lors de la création d'un document XLS dans PHPExcel?


Je le fais avec la solution de Muntashir Akon. Voir ci-dessous avec 33 votes (en ce moment).
LUISAO

Réponses:



83
function cellColor($cells,$color){
    global $objPHPExcel;

    $objPHPExcel->getActiveSheet()->getStyle($cells)->getFill()->applyFromArray(array(
        'type' => PHPExcel_Style_Fill::FILL_SOLID,
        'startcolor' => array(
             'rgb' => $color
        )
    ));
}

cellColor('B5', 'F28A8C');
cellColor('G5', 'F28A8C');
cellColor('A7:I7', 'F28A8C');
cellColor('A17:I17', 'F28A8C');
cellColor('A30:Z30', 'F28A8C');

entrez la description de l'image ici


6
Vos fonctions sont correctes, mais vous utilisez global, et c'est une vraie erreur ... Vous devriez utiliser les fonctionnalités de PHP5. Au lieu de cela, vous pouvez essayer une fonction lambda telle que eval.in/39136 :)
Cito

35

Ce code devrait fonctionner pour vous:

 $PHPExcel->getActiveSheet()
        ->getStyle('A1')
        ->getFill()
        ->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
        ->getStartColor()
        ->setRGB('FF0000')

Mais si vous vous embêtez à l'utiliser encore et encore, je vous recommande de l'utiliser applyFromArray.


Cette solution a fonctionné pour moi. J'essaye applyFromArray, mais rien ne se passe.
LUISAO

11

Cela fonctionne toujours!

$sheet->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setRGB('FF0000');


2
Dans certaines versions de php, ne peut pas casser la ligne à la classe d'attribut. Ancienne version.
Rogerio de Moraes

2
IMPORTANT! Than $ objPHPExcel comme $ sheet est une définition de la classe d'objet PHPExcel. Vous devez l'utiliser comme vous l'avez instancié (à la nouvelle définition de PHPExcel ()).
Rogerio de Moraes

$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ row. ': G'. $ row) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1

10

On dirait qu'il y a un bug avec en applyFromArrayce moment qui n'accepte pas la couleur, mais cela a fonctionné pour moi:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');

1
Bien que ce soit une solution plus élégante (comme je préfère la manière OOP), cela n'a pas fonctionné pour moi: / Used @ user198003 solution fournie
Aurimas

6

Voici comment procéder dans PHPSpreadsheetla dernière version dePHPExcel

$spreadsheet = new Spreadsheet();

$spreadsheet->getActiveSheet()->getStyle('A1:F1')->applyFromArray([
    'fill' => [
            'fillType' => Fill::FILL_SOLID,
            'startColor' => [
                'argb' => 'FFDBE2F1',
            ]           
    ],
]);

approche alternative:

$spreadsheet->getActiveSheet()
    ->getStyle('A1:F1')
    ->getFill()
    ->setFillType(Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFDBE2F1');

4
$objPHPExcel
->getActiveSheet()
->getStyle('A1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB('colorcode'); //i.e,colorcode=D3D3D3

1
$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->getRGB();


0

Vous pouvez facilement appliquer des couleurs sur les cellules et les lignes.

$sheet->cell(1, function($row) 
{ 
  $row->setBackground('#CCCCCC'); 
});

$sheet->row(1, ['Col 1', 'Col 2', 'Col 3']); 
$sheet->row(1, function($row) 
{ 
  $row->setBackground('#CCCCCC'); 
});
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.