mutu-rsab/app/Exports/DashboardAnalisisSheetExport.php
2025-12-04 09:13:20 +07:00

64 lines
1.5 KiB
PHP

<?php
namespace App\Exports;
use Generator;
use Maatwebsite\Excel\Concerns\FromGenerator;
use Maatwebsite\Excel\Concerns\WithStyles;
use Maatwebsite\Excel\Concerns\WithTitle;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Style\Border;
class DashboardAnalisisSheetExport implements FromGenerator, WithStyles, WithTitle
{
protected $data;
protected $title;
public function __construct(array $data, string $title)
{
$this->data = $data;
$this->title = $title;
}
/** STREAMING ROW PER ROW */
public function generator(): Generator
{
foreach ($this->data as $row) {
yield $row;
}
}
/** STYLING */
public function styles(Worksheet $sheet)
{
$lastRow = $sheet->getHighestRow();
$lastColumn = $sheet->getHighestColumn();
$range = 'A1:' . $lastColumn . $lastRow;
// Border
$sheet->getStyle($range)->applyFromArray([
'borders' => [
'allBorders' => [
'borderStyle' => Border::BORDER_THIN,
],
],
]);
// Header style
$sheet->getStyle('A1:' . $lastColumn . '1')->applyFromArray([
'font' => ['bold' => true],
'fill' => [
'fillType' => 'solid',
'color' => ['rgb' => 'FFFF00'],
],
]);
return [];
}
public function title(): string
{
return $this->title;
}
}