Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PhpSpreadsheet set background color of cell to white

Using PhpSpreadsheet, I want to set a white background to the excel cell.

$cells = 'A1';
$spreadsheet
    ->getActiveSheet()
    ->getStyle($cells)
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor(' #FFFFFF')
    ->setARGB('#FFFFFF');

This code makes the cell background black even if I set this white RGB color value: #FFFFFF.

The result I would like to achieve:

BEFORE

AFTER

like image 954
Premlatha Avatar asked Mar 06 '19 03:03

Premlatha


2 Answers

You don't have to include the # symbol when you specify the ARGB for PhpSpreadsheet. These solutions will be able to set the cell background to white:

Cell by cell

$spreadsheet
    ->getActiveSheet()
    ->getStyle($cells)
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()
    ->setARGB('ffffff');

Range of cells

$spreadsheet
    ->getActiveSheet()
    ->getStyle('A1:A5')
    ->getFill()
    ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
    ->getStartColor()
    ->setARGB('ffffff');
like image 197
Premlatha Avatar answered Sep 17 '22 16:09

Premlatha


By using a style array to set few styles at once:

styleArray = array(
            'borders' => array(
                'outline' => array(
                    'borderStyle' => Border::BORDER_THICK,
                    'color' => array('argb' => '00000000'),
                ),
            ),
            'fill' => array(
                'fillType' => Fill::FILL_SOLID,
                'startColor' => array('argb' => 'FF4F81BD')
            )
        );
$spreadsheet->getActiveSheet()->applyFromArray($styleArray);

In some examples, we find 'fill' instead of 'fillType'. Perhaps it depends on version of phpSpreadsheet. Another variant is 'color' instead of 'startColor'.

like image 43
Régis Ramillien Avatar answered Sep 18 '22 16:09

Régis Ramillien