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); } }, ]; } }