| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- <?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 CompoundBacklogSheet implements FromCollection, WithTitle, WithEvents, WithStrictNullComparison, WithCalculatedFormulas, WithCustomStartCell, WithColumnFormatting
- {
- protected $data_, $year_, $jumlah_, $keping_;
-
- public function __construct($data, $year, $jumlah, $keping)
- {
- $this->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);
-
- }
- }
-
- ];
-
- }
-
- }
|