Overview
The Borders class manages all borders for a cell or range, while the Border class controls individual border sides (top, bottom, left, right, diagonal).
Namespace
PhpOffice\PhpSpreadsheet\Style\Borders
PhpOffice\PhpSpreadsheet\Style\Border
Getting Borders Objects
// Get Borders object
$borders = $spreadsheet->getActiveSheet()->getStyle('A1')->getBorders();
// Get individual border sides
$topBorder = $borders->getTop();
$bottomBorder = $borders->getBottom();
$leftBorder = $borders->getLeft();
$rightBorder = $borders->getRight();
$diagonalBorder = $borders->getDiagonal();
Border Constants
Border Styles
BORDER_DASHDOT
string
default:"'dashDot'"
Dash-dot border line
BORDER_DASHDOTDOT
string
default:"'dashDotDot'"
Dash-dot-dot border line
BORDER_MEDIUMDASHED
string
default:"'mediumDashed'"
Medium dashed border line
BORDER_MEDIUMDASHDOT
string
default:"'mediumDashDot'"
Medium dash-dot border line
BORDER_MEDIUMDASHDOTDOT
string
default:"'mediumDashDotDot'"
Medium dash-dot-dot border line
BORDER_SLANTDASHDOT
string
default:"'slantDashDot'"
Slanted dash-dot border line
Diagonal Directions
Diagonal line going up (bottom-left to top-right)
Diagonal line going down (top-left to bottom-right)
Both diagonal lines (X pattern)
Borders Class Methods
getTop()
Get the top border.
public function getTop(): Border
getBottom()
Get the bottom border.
public function getBottom(): Border
getLeft()
Get the left border.
public function getLeft(): Border
getRight()
Get the right border.
public function getRight(): Border
getDiagonal()
Get the diagonal border.
public function getDiagonal(): Border
Pseudo-Border Methods
These special methods only work when applied to ranges:
getAllBorders()
Get a pseudo-border that applies to all borders (outline and inside).
public function getAllBorders(): Border
getOutline()
Get a pseudo-border that applies to outline borders only (top, right, bottom, left).
public function getOutline(): Border
getInside()
Get a pseudo-border that applies to inside borders only.
public function getInside(): Border
getVertical()
Get a pseudo-border that applies to vertical inside borders.
public function getVertical(): Border
getHorizontal()
Get a pseudo-border that applies to horizontal inside borders.
public function getHorizontal(): Border
getDiagonalDirection()
Get the diagonal direction.
public function getDiagonalDirection(): int
setDiagonalDirection()
Set the diagonal direction.
public function setDiagonalDirection(int $direction): static
Diagonal direction (use DIAGONAL_* constants)
applyFromArray()
Apply multiple border settings at once.
public function applyFromArray(array $styleArray): static
Array containing border style information
Border Class Methods
getBorderStyle()
Get the border style.
public function getBorderStyle(): string
setBorderStyle()
Set the border style.
public function setBorderStyle(bool|string $style): static
Border style (use BORDER_* constants). true = BORDER_MEDIUM, false = BORDER_NONE
getColor()
Get the border color.
public function getColor(): Color
setColor()
Set the border color.
public function setColor(Color $color): static
applyFromArray()
Apply border settings.
public function applyFromArray(array $styleArray): static
Array with ‘borderStyle’ and/or ‘color’ keys
Complete Examples
Basic Border Styling
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Method 1: Individual borders
$borders = $sheet->getStyle('A1')->getBorders();
$borders->getTop()->setBorderStyle(Border::BORDER_THIN);
$borders->getBottom()->setBorderStyle(Border::BORDER_THICK);
$borders->getLeft()->setBorderStyle(Border::BORDER_MEDIUM);
$borders->getRight()->setBorderStyle(Border::BORDER_DOUBLE);
// Method 2: Using applyFromArray
$sheet->getStyle('B2')->getBorders()->applyFromArray([
'top' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => '000000']
],
'bottom' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => '000000']
]
]);
All Borders for a Range
// Apply border to all sides of a range
$sheet->getStyle('A1:E10')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_THIN)
->getColor()->setRGB('000000');
// Or using applyFromArray
$sheet->getStyle('A1:E10')->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => '000000']
]
]
]);
Outline Only
// Apply border to outline only (not inside)
$sheet->getStyle('A1:E10')->getBorders()->getOutline()
->setBorderStyle(Border::BORDER_THICK)
->getColor()->setRGB('000000');
// Or using applyFromArray
$sheet->getStyle('A1:E10')->applyFromArray([
'borders' => [
'outline' => [
'borderStyle' => Border::BORDER_THICK,
'color' => ['rgb' => '000000']
]
]
]);
Inside Borders Only
// Apply border to inside cells only
$sheet->getStyle('A1:E10')->applyFromArray([
'borders' => [
'inside' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => 'CCCCCC']
]
]
]);
Vertical and Horizontal Inside Borders
$sheet->getStyle('A1:E10')->applyFromArray([
'borders' => [
'vertical' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => '0000FF']
],
'horizontal' => [
'borderStyle' => Border::BORDER_DASHED,
'color' => ['rgb' => 'FF0000']
]
]
]);
Diagonal Borders
// Diagonal down (top-left to bottom-right)
$borders = $sheet->getStyle('A1')->getBorders();
$borders->setDiagonalDirection(Borders::DIAGONAL_DOWN);
$borders->getDiagonal()
->setBorderStyle(Border::BORDER_THIN)
->getColor()->setRGB('FF0000');
// Diagonal up (bottom-left to top-right)
$sheet->getStyle('B2')->getBorders()->applyFromArray([
'diagonal' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => '0000FF']
],
'diagonalDirection' => Borders::DIAGONAL_UP
]);
// Both diagonals (X pattern)
$sheet->getStyle('C3')->getBorders()->applyFromArray([
'diagonal' => [
'borderStyle' => Border::BORDER_MEDIUM,
'color' => ['rgb' => '00FF00']
],
'diagonalDirection' => Borders::DIAGONAL_BOTH
]);
Table with Borders
// Table outline
$sheet->getStyle('A1:E10')->applyFromArray([
'borders' => [
'outline' => [
'borderStyle' => Border::BORDER_THICK,
'color' => ['rgb' => '000000']
],
'inside' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => 'CCCCCC']
]
]
]);
// Header row with bottom border
$sheet->getStyle('A1:E1')->applyFromArray([
'borders' => [
'bottom' => [
'borderStyle' => Border::BORDER_THICK,
'color' => ['rgb' => '000000']
]
]
]);
Different Border Styles
// Thin border
$sheet->getStyle('A1')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_THIN);
// Dashed border
$sheet->getStyle('A2')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_DASHED);
// Dotted border
$sheet->getStyle('A3')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_DOTTED);
// Double border
$sheet->getStyle('A4')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_DOUBLE);
// Thick border
$sheet->getStyle('A5')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_THICK);
Colored Borders
// Red border
$sheet->getStyle('A1')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_THIN)
->getColor()->setRGB('FF0000');
// Blue border
$sheet->getStyle('A2')->getBorders()->applyFromArray([
'allBorders' => [
'borderStyle' => Border::BORDER_MEDIUM,
'color' => ['rgb' => '0000FF']
]
]);
Complex Border Pattern
// Thick outside, thin inside
$sheet->getStyle('A1:D8')->applyFromArray([
'borders' => [
'outline' => [
'borderStyle' => Border::BORDER_THICK,
'color' => ['rgb' => '000000']
],
'inside' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => 'CCCCCC']
]
]
]);
// Header with special bottom border
$sheet->getStyle('A1:D1')->applyFromArray([
'borders' => [
'bottom' => [
'borderStyle' => Border::BORDER_DOUBLE,
'color' => ['rgb' => '000000']
]
]
]);
Remove Borders
// Remove all borders
$sheet->getStyle('A1:E10')->getBorders()->getAllBorders()
->setBorderStyle(Border::BORDER_NONE);
// Remove specific border
$sheet->getStyle('A1')->getBorders()->getTop()
->setBorderStyle(Border::BORDER_NONE);
Common Use Cases
Grid Layout
$sheet->getStyle('A1:J20')->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => Border::BORDER_THIN,
'color' => ['rgb' => '000000']
]
]
]);
$sheet->getStyle('A1:E1')->applyFromArray([
'borders' => [
'bottom' => [
'borderStyle' => Border::BORDER_THICK,
'color' => ['rgb' => '000000']
]
]
]);
Boxed Section
$sheet->getStyle('B2:D5')->applyFromArray([
'borders' => [
'outline' => [
'borderStyle' => Border::BORDER_THICK,
'color' => ['rgb' => '000000']
]
]
]);
See Also