Ustaw kolor komórki tła w PHPExcel

93

Jak ustawić określony kolor dla aktywnej komórki podczas tworzenia dokumentu XLS w PHPExcel?

user198003
źródło
Zrobiłem to z rozwiązaniem Muntashir Akon. Zobacz poniżej z 33 głosami (teraz).
LUISAO

Odpowiedzi:

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

wprowadź opis obrazu tutaj

Nieograniczone isa
źródło
6
Twoje funkcje są w porządku, ale używasz funkcji globalnych, a to prawdziwy błąd ... Powinieneś skorzystać z funkcji PHP5. Zamiast tego możesz wypróbować funkcję lambda, taką jak eval.in/39136 :)
Cito
36

Ten kod powinien działać dla Ciebie:

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

Ale jeśli masz kłopoty z używaniem tego w kółko, polecam użycie applyFromArray.

Muntashir Akon
źródło
To rozwiązanie zadziałało dla mnie. Próbuję ApplyFromArray, ale nic się nie dzieje.
LUISAO
11

To zawsze działa!

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

Rogerio de Moraes
źródło
2
W niektórych wersjach php nie może łamać linii w klasie atrybutów. Stara wersja.
Rogerio de Moraes
3
WAŻNY! Niż $ objPHPExcel, podobnie jak $ sheet, jest definicją z klasy obiektu PHPExcel. Musisz użyć tak, jak utworzyłeś instancję (w nowej definicji PHPExcel ()).
Rogerio de Moraes
1
$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ row. ': G'. $ row) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1
10

Wygląda na to, że w tej chwili jest błąd applyFromArray, który nie akceptuje koloru, ale to zadziałało:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');
żartobliwy
źródło
1
Chociaż jest to bardziej eleganckie rozwiązanie (ponieważ wolę sposób OOP), nie zadziałało dla mnie: / Rozwiązanie dostarczone @ user198003
Aurimas
6

Oto, jak to robisz w PHPSpreadsheetnajnowszej wersjiPHPExcel

$spreadsheet = new Spreadsheet();

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

podejście alternatywne:

$spreadsheet->getActiveSheet()
    ->getStyle('A1:F1')
    ->getFill()
    ->setFillType(Fill::FILL_SOLID)
    ->getStartColor()->setARGB('FFDBE2F1');
jeleń
źródło
4
$objPHPExcel
->getActiveSheet()
->getStyle('A1')
->getFill()
->setFillType(PHPExcel_Style_Fill::FILL_SOLID)
->getStartColor()
->setRGB('colorcode'); //i.e,colorcode=D3D3D3
Vatsal Patel
źródło
1
$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->getRGB();
Abhishek Jaiswal
źródło
0

Możesz łatwo zastosować kolory do komórek i wierszy.

$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
źródło