Documentation Index
Fetch the complete documentation index at: https://mintlify.com/PHPOffice/PhpSpreadsheet/llms.txt
Use this file to discover all available pages before exploring further.
Overview
The Alignment class controls text alignment, rotation, wrapping, and indentation within cells.
Namespace
PhpOffice\PhpSpreadsheet\Style\Alignment
Getting an Alignment Object
// Via Style object
$alignment = $spreadsheet->getActiveSheet()->getStyle('A1')->getAlignment();
// Via chaining
$spreadsheet->getActiveSheet()->getStyle('A1')
->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_CENTER)
->setVertical(Alignment::VERTICAL_CENTER);
Constants
Horizontal Alignment
HORIZONTAL_GENERAL
string
default:"'general'"
General alignment (default)
HORIZONTAL_JUSTIFY
string
default:"'justify'"
Justified alignment
Fill alignment (repeats content to fill cell width)
HORIZONTAL_CENTER_CONTINUOUS
string
default:"'centerContinuous'"
Center across selection
HORIZONTAL_DISTRIBUTED
string
default:"'distributed'"
Distributed alignment (Excel 2007+)
Vertical Alignment
VERTICAL_JUSTIFY
string
default:"'justify'"
Justified alignment
VERTICAL_DISTRIBUTED
string
default:"'distributed'"
Distributed alignment (Excel 2007+)
Read Order
Context-dependent reading order
Left-to-right reading order
Right-to-left reading order
Text Rotation
TEXTROTATION_STACK_PHPSPREADSHEET
Stack text vertically (special value for PhpSpreadsheet)
Stack text vertically (Excel format value)
Properties
horizontal
string
default:"'general'"
Horizontal alignment
Text rotation angle (-90 to 90 degrees, or -165 for vertical stacking)
Whether to wrap text in cell
Whether to shrink text to fit cell
Indentation level (only works with left/right/distributed horizontal alignment)
Reading order (0=context, 1=LTR, 2=RTL)
Whether to justify the last line (used with justify alignment)
Methods
getHorizontal()
Get horizontal alignment.
public function getHorizontal(): ?string
setHorizontal()
Set horizontal alignment.
public function setHorizontal(string $horizontalAlignment): static
Horizontal alignment (use HORIZONTAL_* constants)
Example:
$alignment->setHorizontal(Alignment::HORIZONTAL_CENTER);
$alignment->setHorizontal(Alignment::HORIZONTAL_LEFT);
$alignment->setHorizontal(Alignment::HORIZONTAL_RIGHT);
getVertical()
Get vertical alignment.
public function getVertical(): ?string
setVertical()
Set vertical alignment.
public function setVertical(string $verticalAlignment): static
Vertical alignment (use VERTICAL_* constants)
Example:
$alignment->setVertical(Alignment::VERTICAL_CENTER);
$alignment->setVertical(Alignment::VERTICAL_TOP);
$alignment->setVertical(Alignment::VERTICAL_BOTTOM);
getTextRotation()
Get text rotation angle.
public function getTextRotation(): ?int
setTextRotation()
Set text rotation angle.
public function setTextRotation(int $angleInDegrees): static
Rotation angle in degrees (-90 to 90, or -165 for vertical stacking)
Example:
$alignment->setTextRotation(45); // 45 degrees
$alignment->setTextRotation(-45); // -45 degrees
$alignment->setTextRotation(90); // 90 degrees
$alignment->setTextRotation(-165); // Vertical stacking
getWrapText()
Get wrap text setting.
public function getWrapText(): bool
setWrapText()
Set wrap text.
public function setWrapText(bool $wrapped): static
Example:
$alignment->setWrapText(true);
getShrinkToFit()
Get shrink to fit setting.
public function getShrinkToFit(): bool
setShrinkToFit()
Set shrink to fit.
public function setShrinkToFit(bool $shrink): static
Whether to shrink text to fit cell
Example:
$alignment->setShrinkToFit(true);
getIndent()
Get indentation level.
public function getIndent(): int
setIndent()
Set indentation level.
public function setIndent(int $indent): static
Indentation level (only works with left, right, or distributed alignment)
Example:
$alignment->setHorizontal(Alignment::HORIZONTAL_LEFT)
->setIndent(2);
getReadOrder()
Get reading order.
public function getReadOrder(): int
setReadOrder()
Set reading order.
public function setReadOrder(int $readOrder): static
Reading order (use READORDER_* constants)
Example:
$alignment->setReadOrder(Alignment::READORDER_RTL); // Right-to-left
$alignment->setReadOrder(Alignment::READORDER_LTR); // Left-to-right
getJustifyLastLine()
Get justify last line setting.
public function getJustifyLastLine(): ?bool
setJustifyLastLine()
Set justify last line.
public function setJustifyLastLine(bool $justifyLastLine): static
Whether to justify the last line
applyFromArray()
Apply multiple alignment settings at once.
public function applyFromArray(array $styleArray): static
Array containing alignment style information
Example:
$alignment->applyFromArray([
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER,
'textRotation' => 0,
'wrapText' => true
]);
Complete Examples
Basic Alignment
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Center alignment (both horizontal and vertical)
$sheet->getStyle('A1')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_CENTER)
->setVertical(Alignment::VERTICAL_CENTER);
// Left-aligned
$sheet->getStyle('A2')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_LEFT);
// Right-aligned
$sheet->getStyle('A3')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_RIGHT);
Text Wrapping
// Enable text wrapping for long text
$sheet->setCellValue('A1', 'This is a very long text that should wrap within the cell');
$sheet->getStyle('A1')->getAlignment()->setWrapText(true);
// Or using applyFromArray
$sheet->getStyle('A2')->applyFromArray([
'alignment' => [
'wrapText' => true
]
]);
Text Rotation
// 45 degree rotation
$sheet->getStyle('A1')->getAlignment()->setTextRotation(45);
// 90 degree rotation (vertical text)
$sheet->getStyle('A2')->getAlignment()->setTextRotation(90);
// -90 degree rotation
$sheet->getStyle('A3')->getAlignment()->setTextRotation(-90);
// Vertical stacking
$sheet->getStyle('A4')->getAlignment()->setTextRotation(-165);
Shrink to Fit
// Text will automatically shrink to fit cell width
$sheet->setCellValue('A1', 'Very long text that needs to fit');
$sheet->getStyle('A1')->getAlignment()->setShrinkToFit(true);
Indentation
// Indent text (only works with left/right alignment)
$sheet->getStyle('A1')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_LEFT)
->setIndent(2);
$sheet->getStyle('A2')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_LEFT)
->setIndent(4);
// Center-aligned, bold header
$sheet->getStyle('A1:E1')->applyFromArray([
'font' => [
'bold' => true
],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER
]
]);
Table with Mixed Alignment
// Headers - centered
$sheet->getStyle('A1:D1')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_CENTER);
// Text columns - left aligned
$sheet->getStyle('A2:B100')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_LEFT);
// Number columns - right aligned
$sheet->getStyle('C2:D100')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_RIGHT);
Multi-line Text
// Text with line breaks
$sheet->setCellValue('A1', "Line 1\nLine 2\nLine 3");
$sheet->getStyle('A1')->getAlignment()
->setWrapText(true)
->setVertical(Alignment::VERTICAL_TOP);
Justified Text
$sheet->setCellValue('A1', 'This is a long paragraph that will be justified across the cell width.');
$sheet->getStyle('A1')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_JUSTIFY)
->setWrapText(true);
Center Across Selection
// Center text across multiple cells without merging
$sheet->setCellValue('A1', 'Centered Across');
$sheet->getStyle('A1:E1')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_CENTER_CONTINUOUS);
// Create vertical column headers
$headers = ['Jan', 'Feb', 'Mar', 'Apr', 'May'];
foreach ($headers as $col => $header) {
$columnLetter = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::stringFromColumnIndex($col + 1);
$sheet->setCellValue($columnLetter . '1', $header);
$sheet->getStyle($columnLetter . '1')->getAlignment()
->setTextRotation(90)
->setHorizontal(Alignment::HORIZONTAL_CENTER);
}
Right-to-Left Text
// For RTL languages (Arabic, Hebrew, etc.)
$sheet->getStyle('A1')->getAlignment()
->setReadOrder(Alignment::READORDER_RTL)
->setHorizontal(Alignment::HORIZONTAL_RIGHT);
Complete Table Example
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
// Headers
$sheet->setCellValue('A1', 'Name');
$sheet->setCellValue('B1', 'Age');
$sheet->setCellValue('C1', 'Salary');
$sheet->setCellValue('D1', 'Notes');
// Header styling
$sheet->getStyle('A1:D1')->applyFromArray([
'font' => ['bold' => true],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER
]
]);
// Data alignment
$sheet->getStyle('A2:A100')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_LEFT); // Names
$sheet->getStyle('B2:C100')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_RIGHT); // Numbers
$sheet->getStyle('D2:D100')->getAlignment()
->setHorizontal(Alignment::HORIZONTAL_LEFT)
->setWrapText(true); // Notes with wrapping
Common Use Cases
$sheet->getStyle('A1:E1')->applyFromArray([
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER
]
]);
Number Column
$sheet->getStyle('C:C')->applyFromArray([
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_RIGHT
]
]);
Text Column
$sheet->getStyle('A:A')->applyFromArray([
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_LEFT,
'wrapText' => true
]
]);
See Also