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?

user198003
la source
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

Isa illimité
la source
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.

Muntashir Akon
la source
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');

Rogerio de Moraes
la source
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');
plaisanter
la source
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');
Deerawan
la source
4
$objPHPExcel
->getActiveSheet()
->getStyle('A1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB('colorcode'); //i.e,colorcode=D3D3D3
Vatsal Patel
la source
1
$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->getRGB();
Abhishek Jaiswal
la source
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'); 
});
Pankaj
la source