Встановити колір фонової комірки у PHPExcel


93

Як встановити конкретний колір для активної комірки під час створення документа XLS у PHPExcel?


Я роблю це за допомогою розчину Muntashir Akon. Дивіться нижче 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/


5
Це був неправильний синтаксис станом на 17.10.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');

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


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 не вдається розбити рядок у класі атрибутів. Стара версія.
Роджеріо де Мораес

2
ВАЖЛИВО! Чим $ objPHPExcel, як $ sheet, є визначенням із класу об'єктів PHPExcel. Вам потрібне використання, подібне до того, як ви створили екземпляр (за новим визначенням PHPExcel ()).
Роджеріо де Мораес

$ 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
Хоча це більш елегантне рішення (оскільки я віддаю перевагу способу ООП), воно для мене не спрацювало: / Використовуване рішення @ user198003
Aurimas

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



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'); 
});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.