Establecer el color de la celda de fondo en PHPExcel

93

¿Cómo establecer un color específico para la celda activa al crear un documento XLS en PHPExcel?

user198003
fuente
Lo hago con la solución de Muntashir Akon. Vea a continuación con 33 votos (ahora mismo).
LUISAO

Respuestas:

146
$sheet->getStyle('A1')->applyFromArray(
    array(
        'fill' => array(
            'type' => PHPExcel_Style_Fill::FILL_SOLID,
            'color' => array('rgb' => 'FF0000')
        )
    )
);

Fuente: http://bayu.freelancer.web.id/2010/07/16/phpexcel-advanced-read-write-excel-made-simple/

user198003
fuente
5
Esta era una sintaxis incorrecta a partir del 17 de octubre de 2013. He editado para reflejar la sintaxis correcta.
Matt Humphrey
¿Cómo establecer el color de fondo en la biblioteca de Excel Laravel?
OPV
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');

ingrese la descripción de la imagen aquí

Isa ilimitada
fuente
6
Tus funciones están bien, pero estás usando global, y eso es un error real ... Deberías hacer uso de las características de PHP5. En su lugar, puede probar una función lambda como eval.in/39136 :)
Cito
35

Este código debería funcionar para usted:

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

Pero si te molestas en usar esto una y otra vez, te recomiendo usar applyFromArray.

Muntashir Akon
fuente
Esta solución funcionó para mí. Intento applyFromArray, pero no pasa nada.
LUISAO
11

¡Esto siempre corriendo!

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

Rogerio de Moraes
fuente
2
En alguna versión de PHP, no se puede romper la línea en la clase de atributo. Versión antigua.
Rogerio de Moraes
2
¡IMPORTANTE! Que $ objPHPExcel como $ sheet es una definición de la clase de objeto PHPExcel. Necesita usarlo como creó una instancia (en la nueva definición de PHPExcel ()).
Rogerio de Moraes
$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ fila. ': G'. $ fila) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1
10

Parece que hay un error en applyFromArrayeste momento que no acepta el color, pero esto funcionó para mí:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');
jocull
fuente
1
Aunque es una solución más elegante (como prefiero la forma OOP), no funcionó para mí: / Usé la solución proporcionada por @ user198003
Aurimas
6

Así es como se hace en PHPSpreadsheet, la versión más reciente dePHPExcel

$spreadsheet = new Spreadsheet();

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

Enfoque alternativo:

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

Puede aplicar colores fácilmente en celdas y filas.

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