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?


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

Respuestas:



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í


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.


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


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

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

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

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'); 
});
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.