Установить цвет ячейки фона в PHPExcel

93

Как установить определенный цвет для активной ячейки при создании документа XLS в PHPExcel?

user198003
источник
Я справляюсь с этим раствором Мунташира Акон. Смотрите ниже с 33 голосами (прямо сейчас).
LUISAO

Ответы:

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

Источник: http://bayu.freelancer.web.id/2010/07/16/phpexcel-advanced-read-write-excel-made-simple/

user198003
источник
5
По состоянию на 17 октября 2013 г. это был неправильный синтаксис. Я отредактировал, чтобы отразить правильный синтаксис.
Мэтт Хамфри
Как установить цвет фона в библиотеке 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');

введите описание изображения здесь

Безграничный isa
источник
6
С вашими функциями все в порядке, но вы используете глобальные, и это настоящая ошибка ... Вам следует использовать возможности PHP5. Вместо этого вы можете попробовать лямбда-функцию, такую ​​как eval.in/39136 :)
Cito
35

Этот код должен работать на вас:

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

Но если вы беспокоитесь об этом снова и снова, я рекомендую использовать applyFromArray.

Мунташир Акон
источник
Это решение сработало для меня. Я пробую applyFromArray, но ничего не происходит.
LUISAO
11

Это всегда работает!

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

Рожерио де Мораес
источник
2
В некоторых версиях php не может разорвать строку в классе атрибутов. Старая версия.
Rogerio de Moraes
2
ВАЖНЫЙ! Чем $ objPHPExcel, как и $ sheet, определяется из класса объектов PHPExcel. Вам нужно использовать, как вы создали (при новом определении PHPExcel ()).
Rogerio de Moraes
$ objPHPExcel-> getActiveSheet () -> getStyle ('A'. $ row. ': G'. $ row) -> getFill () -> setFillType (PHPExcel_Style_Fill :: FILL_SOLID) -> getStartColor () -> setRGB (' FF0000 ');
Defkon1
10

Похоже, сейчас есть ошибка applyFromArray, которая не принимает цвет, но у меня это сработало:

$objPHPExcel
    ->getActiveSheet()
    ->getStyle('A1')
    ->getFill()
    ->getStartColor()
    ->setRGB('FF0000');
шутить
источник
1
Хотя это более элегантное решение (поскольку я предпочитаю способ ООП), оно не сработало для меня: / Used @ user198003 предоставленное решение
Ауримас
6

Вот как это сделать в PHPSpreadsheetпоследней версииPHPExcel

$spreadsheet = new Spreadsheet();

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

альтернативный подход:

$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

Вы можете легко применить цвета к ячейкам и строкам.

$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'); 
});
панкадж
источник