Overview
The Fill class controls cell background colors and fill patterns, including solid colors, gradients, and various pattern fills.
Namespace
PhpOffice\PhpSpreadsheet\Style\Fill
Getting a Fill Object
// Via Style object
$fill = $spreadsheet->getActiveSheet()->getStyle('A1')->getFill();
// Via chaining
$spreadsheet->getActiveSheet()->getStyle('A1')
->getFill()
->setFillType(Fill::FILL_SOLID)
->getStartColor()->setARGB('FFFF0000');
Constants
Fill Types
Pattern Fill Types
FILL_PATTERN_DARKDOWN
string
default:"'darkDown'"
Dark diagonal lines going down
FILL_PATTERN_DARKGRAY
string
default:"'darkGray'"
Dark gray pattern
FILL_PATTERN_DARKGRID
string
default:"'darkGrid'"
Dark grid pattern
FILL_PATTERN_DARKHORIZONTAL
string
default:"'darkHorizontal'"
Dark horizontal lines
FILL_PATTERN_DARKTRELLIS
string
default:"'darkTrellis'"
Dark trellis pattern
Dark diagonal lines going up
FILL_PATTERN_DARKVERTICAL
string
default:"'darkVertical'"
Dark vertical lines
FILL_PATTERN_GRAY0625
string
default:"'gray0625'"
6.25% gray pattern
FILL_PATTERN_GRAY125
string
default:"'gray125'"
12.5% gray pattern
FILL_PATTERN_LIGHTDOWN
string
default:"'lightDown'"
Light diagonal lines going down
FILL_PATTERN_LIGHTGRAY
string
default:"'lightGray'"
Light gray pattern
FILL_PATTERN_LIGHTGRID
string
default:"'lightGrid'"
Light grid pattern
FILL_PATTERN_LIGHTHORIZONTAL
string
default:"'lightHorizontal'"
Light horizontal lines
FILL_PATTERN_LIGHTTRELLIS
string
default:"'lightTrellis'"
Light trellis pattern
FILL_PATTERN_LIGHTUP
string
default:"'lightUp'"
Light diagonal lines going up
FILL_PATTERN_LIGHTVERTICAL
string
default:"'lightVertical'"
Light vertical lines
FILL_PATTERN_MEDIUMGRAY
string
default:"'mediumGray'"
Medium gray pattern
Properties
Fill type (use FILL_* constants)
Rotation angle in degrees (for gradient fills)
Start color (for solid fills, this is the main color)
End color (for gradient fills)
Methods
getFillType()
Get the fill type.
public function getFillType(): ?string
setFillType()
Set the fill type.
public function setFillType(string $fillType): static
Fill type (use FILL_* constants)
Example:
$fill->setFillType(Fill::FILL_SOLID);
$fill->setFillType(Fill::FILL_GRADIENT_LINEAR);
$fill->setFillType(Fill::FILL_PATTERN_DARKGRAY);
getRotation()
Get gradient rotation angle.
public function getRotation(): float
setRotation()
Set gradient rotation angle in degrees.
public function setRotation(float $angleInDegrees): static
Rotation angle in degrees
Example:
$fill->setRotation(45.0); // 45 degree angle
$fill->setRotation(90.0); // 90 degree angle
getStartColor()
Get the start color (or main color for solid fills).
public function getStartColor(): Color
setStartColor()
Set the start color.
public function setStartColor(Color $color): static
Example:
use PhpOffice\PhpSpreadsheet\Style\Color;
$color = new Color('FFFF0000');
$fill->setStartColor($color);
// Or use the existing color object
$fill->getStartColor()->setARGB('FFFF0000');
getEndColor()
Get the end color (for gradient fills).
public function getEndColor(): Color
setEndColor()
Set the end color.
public function setEndColor(Color $color): static
Example:
$fill->getEndColor()->setARGB('FF0000FF');
applyFromArray()
Apply multiple fill settings at once.
public function applyFromArray(array $styleArray): static
Array containing fill style information
Example:
$fill->applyFromArray([
'fillType' => Fill::FILL_GRADIENT_LINEAR,
'rotation' => 90.0,
'startColor' => [
'rgb' => '000000'
],
'endColor' => [
'argb' => 'FFFFFFFF'
]
]);
// For solid fills, you can use 'color' as shorthand
$fill->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'color' => [
'rgb' => 'FFFF00'
]
]);
Complete Examples
Solid Color Fills
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Style\Color;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Method 1: Using setters
$fill = $sheet->getStyle('A1')->getFill();
$fill->setFillType(Fill::FILL_SOLID)
->getStartColor()->setARGB('FFFF0000'); // Red background
// Method 2: Using applyFromArray
$sheet->getStyle('B1')->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'argb' => 'FF00FF00' // Green background
]
]);
// Method 3: Using 'color' shorthand
$sheet->getStyle('C1')->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'color' => [
'rgb' => '0000FF' // Blue background
]
]);
Gradient Fills
// Linear gradient from red to blue
$sheet->getStyle('A2')->getFill()->applyFromArray([
'fillType' => Fill::FILL_GRADIENT_LINEAR,
'rotation' => 90.0,
'startColor' => [
'argb' => 'FFFF0000' // Red
],
'endColor' => [
'argb' => 'FF0000FF' // Blue
]
]);
// Path gradient
$sheet->getStyle('A3')->getFill()->applyFromArray([
'fillType' => Fill::FILL_GRADIENT_PATH,
'startColor' => ['rgb' => 'FFFF00'],
'endColor' => ['rgb' => 'FF00FF']
]);
Pattern Fills
// Dark gray pattern
$sheet->getStyle('A4')->getFill()->applyFromArray([
'fillType' => Fill::FILL_PATTERN_DARKGRAY
]);
// Light grid pattern
$sheet->getStyle('A5')->getFill()->applyFromArray([
'fillType' => Fill::FILL_PATTERN_LIGHTGRID,
'startColor' => ['rgb' => '000000'],
'endColor' => ['rgb' => 'FFFFFF']
]);
// Diagonal lines
$sheet->getStyle('A6')->getFill()->applyFromArray([
'fillType' => Fill::FILL_PATTERN_DARKDOWN
]);
// Create header with colored background
$headerStyle = [
'font' => [
'bold' => true,
'color' => ['rgb' => 'FFFFFF']
],
'fill' => [
'fillType' => Fill::FILL_SOLID,
'startColor' => ['rgb' => '4472C4']
]
];
$sheet->getStyle('A1:E1')->applyFromArray($headerStyle);
Alternating Row Colors
// Zebra striping for better readability
for ($row = 2; $row <= 20; $row++) {
if ($row % 2 == 0) {
$sheet->getStyle("A{$row}:E{$row}")->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'startColor' => ['rgb' => 'F2F2F2'] // Light gray
]);
}
}
Highlight Cells Based on Condition
// Highlight negative values with red background
for ($row = 2; $row <= 10; $row++) {
$value = $sheet->getCell("C{$row}")->getValue();
if ($value < 0) {
$sheet->getStyle("C{$row}")->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'startColor' => ['rgb' => 'FFC7CE'] // Light red
]);
}
}
Traffic Light Colors
// Red
$sheet->getStyle('A1')->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => 'FF0000']
]);
// Yellow
$sheet->getStyle('A2')->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => 'FFFF00']
]);
// Green
$sheet->getStyle('A3')->getFill()->applyFromArray([
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => '00FF00']
]);
Remove Fill
// Set fill to none
$sheet->getStyle('A1')->getFill()->setFillType(Fill::FILL_NONE);
Common Use Cases
$sheet->getStyle('A1:D1')->applyFromArray([
'fill' => [
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => '366092']
],
'font' => [
'bold' => true,
'color' => ['rgb' => 'FFFFFF']
]
]);
Warning Cell
$sheet->getStyle('A1')->applyFromArray([
'fill' => [
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => 'FFF2CC'] // Light yellow
]
]);
Error Cell
$sheet->getStyle('A1')->applyFromArray([
'fill' => [
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => 'FFC7CE'] // Light red
]
]);
Success Cell
$sheet->getStyle('A1')->applyFromArray([
'fill' => [
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => 'C6EFCE'] // Light green
]
]);
See Also