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?


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


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.


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


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

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

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

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'); 
});
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.