50 lines
1.6 KiB
PHP
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);
|
|
},
|
|
];
|
|
}
|
|
}
|