siakad-itm/app/Exports/Concerns/StyledHeadingRow.php
2026-08-30 10:56:23 +07:00

50 lines
1.6 KiB
PHP

<?php
namespace App\Exports\Concerns;
use Maatwebsite\Excel\Events\AfterSheet;
use PhpOffice\PhpSpreadsheet\Style\Alignment;
use PhpOffice\PhpSpreadsheet\Style\Fill;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
trait StyledHeadingRow
{
abstract public function title(): string;
public function styles(Worksheet $sheet): array
{
return [
1 => [
'font' => ['bold' => true, 'color' => ['rgb' => '733E0A']],
'fill' => [
'fillType' => Fill::FILL_SOLID,
'startColor' => ['rgb' => 'FDC700'],
],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_LEFT,
'vertical' => Alignment::VERTICAL_CENTER,
],
],
];
}
public function registerEvents(): array
{
return [
AfterSheet::class => function (AfterSheet $event) {
$sheet = $event->sheet->getDelegate();
$lastColumn = $sheet->getHighestColumn();
$sheet->insertNewRowBefore(1, 1);
$sheet->mergeCells("A1:{$lastColumn}1");
$sheet->setCellValue('A1', $this->title().' '.config('app.name'));
$sheet->getRowDimension(1)->setRowHeight(24);
$sheet->getStyle('A1')->getFont()->setBold(true)->setSize(14);
$sheet->getStyle('A1')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);
$sheet->getStyle('A1')->getAlignment()->setVertical(Alignment::VERTICAL_CENTER);
},
];
}
}