Definir a cor da célula de fundo no PHPExcel

93

Como definir uma cor específica para a célula ativa ao criar um documento XLS no PHPExcel?

user198003
fonte
Eu faço isso com a solução de Muntashir Akon. Veja abaixo com 33 votos (agora).
LUISAO

Respostas:

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');

insira a descrição da imagem aqui

Ilimitada isa
fonte
6
Suas funções estão ok, mas você está usando global, e isso é um verdadeiro erro ... Você deve usar os recursos do PHP5. Em vez disso, você pode tentar uma função lambda, como eval.in/39136 :)
Cito
35

Este código deve funcionar para você:

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

Mas se você se incomodar em usar isso repetidamente, eu recomendo usar applyFromArray.

Muntashir Akon
fonte
Essa solução funcionou para mim. Tento aplicarFromArray, mas nada acontece.
LUISAO
11

Isso sempre correndo!

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

Rogerio de Moraes
fonte
2
Em algumas versões php, não pode quebrar a linha na classe de atributo. Versão antiga.
Rogerio de Moraes
2
IMPORTANTE! Do que $ objPHPExcel como $ sheet é uma definição da classe de objeto PHPExcel. Você precisa usar como instanciado (em new PHPExcel () define).
Rogerio de Moraes
$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ row. ': G'. $ row) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1,
10

Parece que há um bug applyFromArrayno momento que não aceita cores, mas funcionou para mim:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');
alegre
fonte
1
Embora seja uma solução mais elegante (como eu prefiro o modo OOP), não funcionou para mim: / Used @ user198003 forneceu a solução
Aurimas
6

Aqui está como você faz isso PHPSpreadsheet, a versão mais recente doPHPExcel

$spreadsheet = new Spreadsheet();

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

Abordagem alternativa:

$spreadsheet->getActiveSheet()
    ->getStyle('A1:F1')
    ->getFill()
    ->setFillType(Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFDBE2F1');
Deerawan
fonte
4
$objPHPExcel
->getActiveSheet()
->getStyle('A1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB('colorcode'); //i.e,colorcode=D3D3D3
Vatsal Patel
fonte
1
$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->getRGB();
Abhishek Jaiswal
fonte
0

Você pode aplicar cores facilmente em células e linhas.

$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
fonte