Legen Sie die Hintergrundzellenfarbe in PHPExcel fest

93

Wie kann ich beim Erstellen eines XLS-Dokuments in PHPExcel eine bestimmte Farbe für die aktive Zelle festlegen?

user198003
quelle
Ich mache es mit der Lösung von Muntashir Akon. Siehe unten mit 33 Stimmen (gerade jetzt).
LUISAO

Antworten:

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

Geben Sie hier die Bildbeschreibung ein

Grenzenlose isa
quelle
6
Ihre Funktionen sind in Ordnung, aber Sie verwenden global, und das ist ein echter Fehler ... Sie sollten die PHP5-Funktionen nutzen. Stattdessen könnten Sie eine Lambda-Funktion wie eval.in/39136 versuchen :)
Cito
35

Dieser Code sollte für Sie funktionieren:

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

Aber wenn Sie sich die Mühe machen, dies immer und immer wieder zu verwenden, empfehle ich die Verwendung applyFromArray.

Muntashir Akon
quelle
Diese Lösung hat bei mir funktioniert. Ich versuche applyFromArray, aber es passiert nichts.
LUISAO
11

Das läuft immer!

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

Rogerio de Moraes
quelle
2
In einigen PHP-Versionen kann die Zeile in der Attributklasse nicht unterbrochen werden. Alte Version.
Rogerio de Moraes
2
WICHTIG! Als $ objPHPExcel ist wie $ sheet eine Definition aus der Objektklasse PHPExcel. Sie müssen verwenden, wie Sie instanziiert haben (bei neuem PHPExcel () definieren).
Rogerio de Moraes
$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ row. ': G'. $ row) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1
10

Es scheint, als gäbe es momentan einen Fehler applyFromArray, der keine Farbe akzeptiert, aber das hat bei mir funktioniert:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');
scherz
quelle
1
Obwohl es eine elegantere Lösung ist (da ich OOP bevorzuge), hat es bei mir nicht funktioniert: / Used @ user198003 bereitgestellte Lösung
Aurimas
6

Hier ist, wie Sie es tun PHPSpreadsheet, die neueste Version vonPHPExcel

$spreadsheet = new Spreadsheet();

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

alternativer Ansatz:

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

Sie können ganz einfach Farben auf Zellen und Zeilen anwenden.

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