data = $data; $this->year1 = $year1; $this->year2 = $year2; $this->end_date = $end_date; } public function collection() { return collect($this->data); } public function title(): string { return 'LAP. KOMPAUN'; } public function startCell(): string { return 'A11'; } public function columnFormats(): array { return [ 'B' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'C' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'D' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'E' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'F' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'K' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'L' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'M' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, ]; } public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { $column = ['B','C','H','I','J']; foreach ($column as $key => $c) { $event->sheet->getDelegate()->getColumnDimension($c)->setWidth(11.24); } $event->sheet->getDelegate()->getColumnDimension('A')->setWidth(6.71); $event->sheet->getDelegate()->getColumnDimension('D')->setWidth(12.14); $event->sheet->getDelegate()->getColumnDimension('K')->setWidth(12.14); $event->sheet->getDelegate()->getColumnDimension('E')->setWidth(10.57); $event->sheet->getDelegate()->getColumnDimension('L')->setWidth(10.57); $event->sheet->getDelegate()->getColumnDimension('F')->setWidth(11.86); $event->sheet->getDelegate()->getColumnDimension('M')->setWidth(11.86); $event->sheet->getDelegate()->getColumnDimension('G')->setWidth(9.43); $event->sheet->getDelegate()->getColumnDimension('N')->setWidth(9.43); $event->sheet->getDelegate()->getColumnDimension('H')->setWidth(10.86); $event->sheet->getDelegate()->getColumnDimension('O')->setWidth(10.86); // set up a style array for cell formatting $style_bold_text_center_arial = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 10, 'name' => 'Arial' ] ]; $style_bold_text_center_calibri = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 10, 'name' => 'Calibri' ] ]; $style_bold_text_right = [ 'alignment' => [ 'horizontal' => 'right', ], 'font' => [ 'bold' => true, 'size' => 10, 'name' => 'Calibri' ] ]; $style_normal_text_right = [ 'alignment' => [ 'horizontal' => 'right', ], 'font' => [ 'bold' => false, 'size' => 10, 'name' => 'Calibri' ] ]; $style_border = [ 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_MEDIUM, 'color' => ['argb' => '000000'], ], ], ]; $style_border_top = [ 'borders' => [ 'top' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, 'color' => ['argb' => '000000'], ], ], 'font' => [ 'bold' => true, 'size' => 10, 'name' => 'Calibri' ], 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], ]; 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) + 5 + 4 + 1 + 1; $last_row_data = count($this->data) + 5 + 4 + 1 + 1 + 4; // 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('A3:%s3',$last_column)); $event->sheet->mergeCells(sprintf('A4:%s4',$last_column)); $event->sheet->mergeCells(sprintf('A5:%s5',$last_column)); $event->sheet->mergeCells(sprintf('A%d:G%d',$last_row_data, $last_row_data)); $event->sheet->mergeCells(sprintf('A%d:G%d',$last_row_data+3, $last_row_data+3)); $event->sheet->mergeCells(sprintf('A%d:G%d',$last_row_data+6, $last_row_data+6)); $event->sheet->mergeCells(sprintf('A%d:G%d',$last_row_data+9, $last_row_data+9)); // merge cells for header $event->sheet->mergeCells('A6:A9'); $event->sheet->mergeCells('B6:B9'); $event->sheet->mergeCells('C6:C9'); $event->sheet->mergeCells('D6:D9'); $event->sheet->mergeCells('E6:F6'); $event->sheet->mergeCells('E7:E9'); $event->sheet->mergeCells('F7:F9'); $event->sheet->mergeCells('G6:G9'); $event->sheet->mergeCells('H6:H9'); $event->sheet->mergeCells('I6:I9'); $event->sheet->mergeCells('J6:J9'); $event->sheet->mergeCells('K6:K9'); $event->sheet->mergeCells('L6:M6'); $event->sheet->mergeCells('L7:L9'); $event->sheet->mergeCells('M7:M9'); $event->sheet->mergeCells('N6:N9'); $event->sheet->mergeCells('O6:O9'); //assign cell values $event->sheet->setCellValue('A1','LAPORAN PERBEZAAN KUTIPAN KOMPAUN SEMASA ( '. strtoupper(date('d F Y', strtotime($this->end_date))).' )'); $event->sheet->setCellValue('A2','JABATAN KHIDMAT PENGURUSAN BAHAGIAN PENGUATKUASA'); $event->sheet->setCellValue('A3','MAJLIS DAERAH CAMERON HIGHLANDS'); $event->sheet->setCellValue('A4','TAHUN '.$this->year1.'/'.$this->year2); $event->sheet->setCellValue('A5',''); // Table TH (Head) $event->sheet->setCellValue('A6','BULAN'); $event->sheet->setCellValue('B6', 'ANGGARAN TAHUN '.$this->year1); $event->sheet->setCellValue('C6','KOMPAUN KELUAR (RM)'); $event->sheet->setCellValue('D6','PENGURANGAN KOMPAUN (RM)'); $event->sheet->setCellValue('E6','KUTIPAN SEMASA'); $event->sheet->setCellValue('E7','KUTIPAN BULANAN (RM)'); $event->sheet->setCellValue('F7','KUTIPAN TERKUMPUL (RM)'); $event->sheet->setCellValue('G6','% KUTIPAN'); $event->sheet->setCellValue('H6','% TERKUMPUL'); $event->sheet->setCellValue('I6','ANGGARAN TAHUN '.$this->year2); $event->sheet->setCellValue('J6','KOMPAUN KELUAR (RM)'); $event->sheet->setCellValue('K6','PENGURANGAN KOMPAUN (RM)'); $event->sheet->setCellValue('L6','KUTIPAN SEMASA'); $event->sheet->setCellValue('L7','KUTIPAN BULANAN (RM)'); $event->sheet->setCellValue('M7','KUTIPAN TERKUMPUL (RM)'); $event->sheet->setCellValue('N6','% KUTIPAN'); $event->sheet->setCellValue('O6','% TERKUMPUL'); // Table TH (Footer) $event->sheet->setCellValue(sprintf('B%d',$last_row),'JUMLAH '); $event->sheet->setCellValue(sprintf('I%d',$last_row),'JUMLAH '); $event->sheet->setCellValue(sprintf('C%d',$last_row),'=SUM(C11:C'.$last_row.')'); $event->sheet->setCellValue(sprintf('D%d',$last_row),'=SUM(D11:D'.$last_row.')'); $event->sheet->setCellValue(sprintf('E%d',$last_row),'=SUM(E11:E'.$last_row.')'); $event->sheet->setCellValue(sprintf('J%d',$last_row),'=SUM(J11:J'.$last_row.')'); $event->sheet->setCellValue(sprintf('K%d',$last_row),'=SUM(K11:K'.$last_row.')'); $event->sheet->setCellValue(sprintf('L%d',$last_row),'=SUM(L11:L'.$last_row.')'); $event->sheet->setCellValue(sprintf('A%d',$last_row_data), '** Kutipan Kompaun Berdasarkan Kepada Anggaran Tahunan '); $event->sheet->setCellValue(sprintf('A%d', $last_row_data+3), '** Kutipan Kompaun Berdasarkan Kepada Anggaran Dikeluarkan '); $event->sheet->setCellValue(sprintf('A%d', $last_row_data+6), '** Jumlah Pengurangan Kompaun '); $event->sheet->setCellValue(sprintf('A%d', $last_row_data+9), '** Kutipan Kompaun Setelah ditolak pengurangan kompaun '); $event->sheet->setCellValue(sprintf('H%d', $last_row_data), '=L'.$last_row); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+1), '=I11'); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+3), '=L'.$last_row); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+4), '=J'.$last_row); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+6), '=K'.$last_row); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+7), '=J'.$last_row); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+9), '=L'.$last_row); $event->sheet->setCellValue(sprintf('H%d', $last_row_data+10), '=J'.$last_row.'-K'.$last_row); $event->sheet->setCellValue(sprintf('I%d', $last_row_data), 'X 100 '); $event->sheet->setCellValue(sprintf('I%d', $last_row_data+3), 'X 100 '); $event->sheet->setCellValue(sprintf('I%d', $last_row_data+6), 'X 100 '); $event->sheet->setCellValue(sprintf('I%d', $last_row_data+9), 'X 100 '); $event->sheet->setCellValue(sprintf('J%d', $last_row_data), '=H'.$last_row_data.'/H'.($last_row_data+1).'*100'); $event->sheet->setCellValue(sprintf('J%d', $last_row_data+3), '=H'.($last_row_data+3).'/H'.($last_row_data+4).'*100'); $event->sheet->setCellValue(sprintf('J%d', $last_row_data+6), '=H'.($last_row_data+6).'/H'.($last_row_data+7).'*100'); $event->sheet->setCellValue(sprintf('J%d', $last_row_data+9), '=H'.($last_row_data+9).'/H'.($last_row_data+10).'*100'); $event->sheet->setCellValue(sprintf('K%d', $last_row_data), '%'); $event->sheet->setCellValue(sprintf('K%d', $last_row_data+3), '%'); $event->sheet->setCellValue(sprintf('K%d', $last_row_data+6), '%'); $event->sheet->setCellValue(sprintf('K%d', $last_row_data+9), '%'); // assign cell styles $event->sheet->getStyle('A1')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('A2:A4')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle(sprintf('A6:%s6',$last_column))->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('E6')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('E7')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('F7')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('L6')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('L7')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('M7')->applyFromArray($style_bold_text_center_calibri); $event->sheet->getStyle('A6:O6')->getAlignment()->setWrapText(true); $event->sheet->getStyle('A7:O7')->getAlignment()->setWrapText(true); $event->sheet->getStyle(sprintf('B%d',$last_row))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('C%d',$last_row))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('D%d',$last_row))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('E%d',$last_row))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('I%d',$last_row))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('J%d',$last_row))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('K%d',$last_row))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('L%d',$last_row))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('A11:A%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('B11:B%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('C11:C%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('D11:D%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('E11:E%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('F11:F%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('G11:G%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('H11:H%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('I11:I%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('J11:J%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('K11:K%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('L11:L%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('M11:M%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('N11:N%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('O11:O%d',($last_row-1)))->applyFromArray($style_normal_text_right); $event->sheet->getStyle(sprintf('A%d:G%d',$last_row_data, $last_row_data))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('A%d:G%d',($last_row_data+3), ($last_row_data+3)))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('A%d:G%d',($last_row_data+6), ($last_row_data+6)))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('A%d:G%d',($last_row_data+9), ($last_row_data+9)))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('H%d', $last_row_data))->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+3))->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+6))->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+9))->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+1))->applyFromArray($style_border_top)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+4))->applyFromArray($style_border_top)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+7))->applyFromArray($style_border_top)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('H%d', $last_row_data+10))->applyFromArray($style_border_top)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('I%d', $last_row_data))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('I%d', $last_row_data+3))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('I%d', $last_row_data+6))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('I%d', $last_row_data+9))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('J%d', $last_row_data))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('J%d', $last_row_data+3))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('J%d', $last_row_data+6))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('J%d', $last_row_data+9))->applyFromArray($style_bold_text_right)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('K%d', $last_row_data))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('K%d', $last_row_data+3))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('K%d', $last_row_data+6))->applyFromArray($style_bold_text_right); $event->sheet->getStyle(sprintf('K%d', $last_row_data+9))->applyFromArray($style_bold_text_right); // assign border styles $event->sheet->getStyle(sprintf('A6:A%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('B6:B%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('C6:C%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('D6:D%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('E6:E%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('F6:F%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('G6:G%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('H6:H%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('I6:I%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('J6:J%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('K6:K%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('L6:L%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('M6:M%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('N6:N%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('O6:O%d',$last_row))->applyFromArray($style_border); } }, ]; } }