data_ = $data; $this->year_ = $year; $this->jumlah_ = $jumlah; $this->keping_ = $keping; } public function collection() { return collect($this->data_); } public function startCell(): string { return 'A10'; } public function title(): string { return 'LAP. TUNGGAKAN'; } public function columnFormats(): array { return [ 'A' => 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, 'G' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'H' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'I' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, 'J' => NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1, ]; } public function registerEvents(): array { return [ AfterSheet::class => function(AfterSheet $event) { $event->sheet->getDelegate()->getColumnDimension('A')->setWidth(10.34); $event->sheet->getDelegate()->getColumnDimension('B')->setWidth(26.01); $event->sheet->getDelegate()->getColumnDimension('C')->setWidth(15.07); $event->sheet->getDelegate()->getColumnDimension('D')->setWidth(14.34); $event->sheet->getDelegate()->getColumnDimension('E')->setWidth(16.85); $event->sheet->getDelegate()->getColumnDimension('F')->setWidth(16.78); $event->sheet->getDelegate()->getColumnDimension('G')->setWidth(12.95); $event->sheet->getDelegate()->getColumnDimension('H')->setWidth(13.86); $event->sheet->getDelegate()->getColumnDimension('I')->setWidth(11.88); $event->sheet->getDelegate()->getColumnDimension('J')->setWidth(14.12); // set up a style array for cell formatting $style_bold_text_center_arial = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 11, 'name' => 'Arial' ] ]; $style_bold_text_center_calibri_12 = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 12, 'name' => 'Calibri' ] ]; $style_bold_text_center_calibri = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => true, 'size' => 10, 'name' => 'Calibri' ] ]; $style_normal_text_center = [ 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], 'font' => [ 'bold' => false, 'size' => 10, 'name' => 'Calibri' ] ]; $style_bold_text_right = [ 'alignment' => [ 'horizontal' => 'right', ], 'font' => [ 'bold' => true, 'size' => 10, 'name' => 'Calibri' ] ]; $style_border = [ 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_MEDIUM, 'color' => ['argb' => '000000'], ], ], ]; $style_border_thin = [ 'borders' => [ 'allBorders' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN, 'color' => ['argb' => '000000'], ], ], ]; $style_border_medium = [ 'borders' => [ 'top' => [ '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', ], ]; $style_border_side = [ 'borders' => [ 'left' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_MEDIUM, 'color' => ['argb' => '000000'], ], 'right' => [ 'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_MEDIUM, 'color' => ['argb' => '000000'], ], ], 'font' => [ 'bold' => false, 'size' => 11, 'name' => 'Arial' ], 'alignment' => [ 'horizontal' => 'center', 'vertical' => 'center', ], ]; if(count($this->data_ ) > 0) { $last_column = Coordinate::stringFromColumnIndex(count($this->data_[0])); $last_row = count($this->data_) + 5 + 4 + 1 ; $last_row_data = count($this->data_) + 5 + 4 + 1 + 2 ; //merge cells for full width (main title) $event->sheet->mergeCells(sprintf('A2:%s2',$last_column)); $event->sheet->mergeCells(sprintf('A3:%s3',$last_column)); $event->sheet->mergeCells(sprintf('A4:%s4',$last_column)); //declare merging cells for header //horizontal $event->sheet->mergeCells('A22:B22'); // $event->sheet->mergeCells('B6:C6'); // $event->sheet->mergeCells('B8:C8'); $event->sheet->mergeCells('B24:C24'); //vertical $event->sheet->mergeCells('A6:A9'); $event->sheet->mergeCells('B6:B7'); $event->sheet->mergeCells('B10:B21'); $event->sheet->mergeCells('C6:C9'); $event->sheet->mergeCells('D6:D9'); $event->sheet->mergeCells('E6:E9'); $event->sheet->mergeCells('E24:E25'); $event->sheet->mergeCells('F6:F9'); $event->sheet->mergeCells('F24:F25'); $event->sheet->mergeCells('G6:G9'); $event->sheet->mergeCells('H6:H9'); $event->sheet->mergeCells('I6:I9'); $event->sheet->mergeCells('J6:J9'); //assign cell values for table header $event->sheet->setCellValue('A2', 'LAPORAN TUNGGAKAN TAHUN '. $this->year_); $event->sheet->setCellValue('A3', 'BAHAGIAN PENGUATKUASA'); $event->sheet->setCellValue('A4', 'MAJLIS DAERAH CAMERON HIGHLAND'); $event->sheet->setCellValue('A6', 'BULAN'); $event->sheet->setCellValue('B6', 'BAKI PADA 1.1.'. $this->year_); $event->sheet->setCellValue('B8', $this->jumlah_); $event->sheet->setCellValue('B9', $this->keping_); $event->sheet->setCellValue('C6', 'KUTIPAN BULANAN (RM)'); $event->sheet->setCellValue('D6', 'JUMLAH KOMPAUN BAYAR'); $event->sheet->setCellValue('E6', 'KUTIPAN TERKUMPUL (RM)'); $event->sheet->setCellValue('F6', 'BAKI TUNGGAKAN (RM)'); $event->sheet->setCellValue('G6', 'BAKI BELUM BAYAR'); $event->sheet->setCellValue('H6', 'JUMLAH KURANG (RM)'); $event->sheet->setCellValue('I6', '% KUTIPAN'); $event->sheet->setCellValue('J6', '% TERKUMPUL'); //assign cell values for table footer $event->sheet->setCellValue(sprintf('C%d',$last_row),'=SUM(C10:C'.$last_row.')'); $event->sheet->setCellValue(sprintf('D%d',$last_row),'=SUM(D10:D'.$last_row.')'); $event->sheet->setCellValue(sprintf('H%d',$last_row),'=SUM(H10:H'.$last_row.')'); $event->sheet->setCellValue(sprintf('B%d',$last_row_data), 'Kutipan tunggakan terkumpul : '); $event->sheet->setCellValue(sprintf('D%d',$last_row_data), '=SUM(C10:C'.($last_row-1).')'); $event->sheet->setCellValue(sprintf('D%d',$last_row_data+1), $this->jumlah_); $event->sheet->setCellValue(sprintf('E%d',$last_row_data), 'x 100 ='); $event->sheet->setCellValue(sprintf('F%d',$last_row_data), '=D'.($last_row_data).'/D'.($last_row_data+1).'*100'); // $event->sheet->setCellValue(sprintf('G%d',$last_row_data), '%'); //styling cells $event->sheet->getStyle('A2')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('A3:A4')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('A6:J6')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('B7:B9')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('C22')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('D22')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('H22')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('B24:F24')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('D25')->applyFromArray($style_bold_text_center_arial); $event->sheet->getStyle('A6:O6')->getAlignment()->setWrapText(true); $event->sheet->getStyle('A7:O7')->getAlignment()->setWrapText(true); //text alignment $event->sheet->getStyle(sprintf('A10:A%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('B10:B%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('C10:C%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('D10:D%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('E10:E%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('F10:F%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('G10:G%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('H10:H%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('I10:I%d',($last_row-1)))->applyFromArray($style_normal_text_center); $event->sheet->getStyle(sprintf('J10:J%d',($last_row-1)))->applyFromArray($style_normal_text_center); // assign border styles $event->sheet->getStyle('A6:A9')->applyFromArray($style_border); $event->sheet->getStyle('B6')->applyFromArray($style_border); $event->sheet->getStyle('B10')->applyFromArray($style_border); $event->sheet->getStyle('C6:C9')->applyFromArray($style_border); $event->sheet->getStyle('D6:D9')->applyFromArray($style_border); $event->sheet->getStyle('E6:E9')->applyFromArray($style_border); $event->sheet->getStyle('F6:F9')->applyFromArray($style_border); $event->sheet->getStyle('G6:G9')->applyFromArray($style_border); $event->sheet->getStyle('H6:H9')->applyFromArray($style_border); $event->sheet->getStyle('I6:I9')->applyFromArray($style_border); $event->sheet->getStyle('J6:J9')->applyFromArray($style_border); $event->sheet->getStyle(sprintf('A10:A%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('B10:B%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('C10:C%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('D10:D%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('E10:E%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('F10:F%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('G10:G%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('H10:H%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('I10:I%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('J10:J%d',$last_row-1))->applyFromArray($style_border_side); $event->sheet->getStyle(sprintf('A%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('B%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('C%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('D%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('E%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('F%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('G%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('H%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('I%d',$last_row))->applyFromArray($style_border); $event->sheet->getStyle(sprintf('J%d',$last_row))->applyFromArray($style_border); //cell numbering style $event->sheet->getStyle('B8')->applyFromArray($style_border_medium)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('D%d', $last_row_data))->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('D%d', $last_row_data+1))->applyFromArray($style_border_top)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle(sprintf('F%d', $last_row_data))->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle('C22')->applyFromArray($style_bold_text_center_calibri_12)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); $event->sheet->getStyle('D22')->applyFromArray($style_bold_text_center_calibri_12)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER); $event->sheet->getStyle(sprintf('D10:D%d', $last_row))->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER); $event->sheet->getStyle('G22')->applyFromArray($style_bold_text_center_calibri)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER); $event->sheet->getStyle(sprintf('G10:G%d', $last_row))->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER); $event->sheet->getStyle('H22')->applyFromArray($style_bold_text_center_calibri_12)->getNumberFormat()->setFormatCode(\PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_NUMBER_00); } } ]; } }