| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- <?php
- namespace App\Exports;
-
- use Maatwebsite\Excel\Concerns\FromCollection;
- use Maatwebsite\Excel\Concerns\WithHeadings;
- use Maatwebsite\Excel\Concerns\WithTitle;
- use Maatwebsite\Excel\Concerns\ShouldAutoSize;
- use Maatwebsite\Excel\Concerns\WithStrictNullComparison;
- use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
- use Maatwebsite\Excel\Concerns\WithStartRow;
- use Maatwebsite\Excel\Concerns\WithCustomStartCell;
- use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
- use Maatwebsite\Excel\Concerns\WithColumnFormatting;
-
- use Maatwebsite\Excel\Concerns\WithEvents;
- use Maatwebsite\Excel\Events\BeforeExport;
- use Maatwebsite\Excel\Events\AfterSheet;
-
- use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
-
- class EnforcerStatisticSheet implements FromCollection, WithHeadings, ShouldAutoSize, WithTitle, WithEvents, WithStrictNullComparison, WithCalculatedFormulas, WithCustomStartCell
- {
- protected $data, $year, $title, $text_last_row;
-
- public function __construct($data, $year, $title)
- {
- $this->data = $data;
- $this->year = $year;
- $this->title = $this->year.'('.$title.')';
-
- if($title == 'KEPING'){
- $this->text_last_row = 'JUMLAH PENGELUARAN KOMPAUN BAGI SETIAP ANGGOTA ADALAH SEBANYAK 14 KEPING SEBULAN = 168 KEPING SETAHUN';
- }else {
- $this->text_last_row = 'JUMLAH PENGELUARAN KOMPAUN BAGI SETIAP ANGGOTA ADALAH SEBANYAK 1000.00 SEBULAN';
- }
- }
-
- public function collection()
- {
- return collect($this->data);
- }
-
- public function headings(): array
- {
- return [
- 'BIL',
- 'NAMA ANGGOTA',
- 'JAN',
- 'FEB',
- 'MAC',
- 'APRIL',
- 'MEI',
- 'JUN',
- 'JULAI',
- 'OGOS',
- 'SEPT',
- 'OKT',
- 'NOV',
- 'DIS',
- 'JUM',
- ];
- }
-
- public function title(): string
- {
- return $this->title;
- }
-
- public function startCell(): string
- {
- return 'A4';
- }
-
- public function registerEvents(): array
- {
- return [
- AfterSheet::class => function(AfterSheet $event) {
-
- // set up a style array for cell formatting
- $style_bold_text_center = [
- 'alignment' => [
- 'horizontal' => 'center',
- 'vertical' => 'center',
- ],
- 'font' => [
- 'bold' => true
- ],
-
- ];
-
- $style_bold_text_left = [
- 'alignment' => [
- 'horizontal' => 'left',
- ],
- 'font' => [
- 'bold' => true
- ]
- ];
-
- $style_normal_text_left = [
- 'alignment' => [
- 'horizontal' => 'left',
- ],
- 'font' => [
- 'bold' => false
- ]
- ];
-
- $style_normal_text_center = [
- 'alignment' => [
- 'horizontal' => 'center',
- ],
- 'font' => [
- 'bold' => false
- ]
- ];
-
- $style_border = [
- 'borders' => [
- 'allBorders' => [
- 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
- 'color' => ['argb' => '000000'],
- ],
- ],
- ];
-
- if(count($this->data) > 0){
- // last column as letter value (e.g., D)
- $last_column = Coordinate::stringFromColumnIndex(count($this->data[0]));
- $second_last_column = Coordinate::stringFromColumnIndex(count($this->data[0])-1);
- // calculate last row + 1 (total results + header rows + column headings row + new row)
- $last_row = count($this->data) + 2 + 2 + 1 + 3;
-
- // merge cells for header
- $event->sheet->mergeCells('A3:A4');
- $event->sheet->mergeCells('B3:B4');
- $event->sheet->mergeCells(sprintf('C3:%s3', $second_last_column));
- $event->sheet->mergeCells(sprintf('%s3:%s4',$last_column, $last_column));
-
- // merge cells for full-width
- $event->sheet->mergeCells(sprintf('A1:%s1',$last_column));
- $event->sheet->mergeCells(sprintf('A2:%s2',$last_column));
- $event->sheet->mergeCells(sprintf('B%d:%s%d',$last_row,$last_column,$last_row));
-
- // assign cell values
- $event->sheet->setCellValue('A1','STATISTIK PENGELUARAN KOMPAUN (BULANAN) BAGI TAHUN '.$this->year);
- $event->sheet->setCellValue('A2','');
- $event->sheet->setCellValue('A3','BIL');
- $event->sheet->setCellValue('B3','NAMA ANGGOTA');
- $event->sheet->setCellValue(sprintf('%s3',$last_column),'JUM');
- $event->sheet->setCellValue('C3','BULAN');
- $event->sheet->setCellValue('C4','JAN');
- $event->sheet->setCellValue('D4','FEB');
- $event->sheet->setCellValue('E4','MAC');
- $event->sheet->setCellValue('F4','APRIL');
- $event->sheet->setCellValue('G4','MEI');
- $event->sheet->setCellValue('H4','JUN');
- $event->sheet->setCellValue('I4','JULAI');
- $event->sheet->setCellValue('J4','OGOS');
- $event->sheet->setCellValue('K4','SEPT');
- $event->sheet->setCellValue('L4','OKT');
- $event->sheet->setCellValue('M4','NOV');
- $event->sheet->setCellValue('N4','DIS');
-
- $event->sheet->setCellValue(sprintf('A%d',$last_row),'**');
- $event->sheet->setCellValue(sprintf('B%d',$last_row), $this->text_last_row);
- $event->sheet->setCellValue(sprintf('B%d',$last_row-2), 'JUMLAH BESAR');
- $event->sheet->setCellValue(sprintf('C%d',$last_row-2), '=SUM(C5:C'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('D%d',$last_row-2), '=SUM(D5:D'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('E%d',$last_row-2), '=SUM(E5:E'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('F%d',$last_row-2), '=SUM(F5:F'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('G%d',$last_row-2), '=SUM(G5:G'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('H%d',$last_row-2), '=SUM(H5:H'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('I%d',$last_row-2), '=SUM(I5:I'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('J%d',$last_row-2), '=SUM(J5:J'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('K%d',$last_row-2), '=SUM(K5:K'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('L%d',$last_row-2), '=SUM(L5:L'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('M%d',$last_row-2), '=SUM(M5:M'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('N%d',$last_row-2), '=SUM(N5:N'.($last_row-3).')');
- $event->sheet->setCellValue(sprintf('O%d',$last_row-2), '=SUM(O5:O'.($last_row-3).')');
-
- // assign cell styles
- $event->sheet->getStyle('A1:A2')->applyFromArray($style_bold_text_center);
- $event->sheet->getStyle(sprintf('A3:%s3',$last_column))->applyFromArray($style_bold_text_center);
- $event->sheet->getStyle('C4:N4')->applyFromArray($style_bold_text_center);
- $event->sheet->getStyle(sprintf('A5:A%d',($last_row-2)))->applyFromArray($style_bold_text_center);
- $event->sheet->getStyle(sprintf('%s5:%s%d',$last_column,$last_column,($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('C5:C%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('D5:D%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('E5:E%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('F5:F%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('G5:G%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('H5:H%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('I5:I%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('J5:J%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('K5:K%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('L5:L%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('M5:M%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('N5:N%d',($last_row-2)))->applyFromArray($style_normal_text_center);
- $event->sheet->getStyle(sprintf('B%d:O%d',($last_row-2),($last_row-2)))->applyFromArray($style_bold_text_center);
-
- $event->sheet->getStyle('A3:O3')->getFill()
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
- ->getStartColor()->setARGB('A5A5A5');
- $event->sheet->getStyle('C4:N4')->getFill()
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
- ->getStartColor()->setARGB('A5A5A5');
- $event->sheet->getStyle(sprintf('A%d:O%d', ($last_row-2), ($last_row-2) ))->getFill()
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
- ->getStartColor()->setARGB('A5A5A5');
- $event->sheet->getStyle(sprintf('A5:A%d', ($last_row-3)))->getFill()
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
- ->getStartColor()->setARGB('E5B8B7');
- $event->sheet->getStyle(sprintf('B5:B%d', ($last_row-3)))->getFill()
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
- ->getStartColor()->setARGB('E5B8B7');
- $event->sheet->getStyle(sprintf('O5:O%d', ($last_row-3)))->getFill()
- ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
- ->getStartColor()->setARGB('E5B8B7');
-
- $event->sheet->getStyle(sprintf('A%d',$last_row))->applyFromArray($style_bold_text_left);
- $event->sheet->getStyle(sprintf('B%d',$last_row))->applyFromArray($style_bold_text_left);
-
- // assign border styles
- $event->sheet->getStyle(sprintf('A3:A%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('B3:B%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('C3:C%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('D3:D%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('E3:E%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('F3:F%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('G3:G%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('H3:H%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('I3:I%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('J3:J%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('K3:K%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('L3:L%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('M3:M%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('N3:N%d',($last_row-2)))->applyFromArray($style_border);
- $event->sheet->getStyle(sprintf('O3:O%d',($last_row-2)))->applyFromArray($style_border);
- }
- },
- ];
- }
- }
|