Source of file YearCalendarExport.php
Size: 3,281 Bytes - Last Modified: 2021-12-23T10:04:07+00:00
/var/www/docs.ssmods.com/process/src/code/service/YearCalendarExport.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 | <?php class YearCalendarExport { /** * Constants header values * */ const HEADER_A = 'Titel'; const HEADER_B = 'Datum van'; const HEADER_C = 'Tijd van'; const HEADER_D = 'Datum tot en met'; const HEADER_E = 'Tijd'; const HEADER_F = 'Hele dag'; const HEADER_G = 'Inhoud'; const HEADER_H = 'Tag'; /** * Constants whole day values * */ const WHOLE_DAY_YES = 'Ja'; const WHOLE_DAY_NO = 'Nee'; /** * Create a new instance * * @return static */ public static function create() { return new static(); } /** * Generate a new spreadsheet * */ public function generate() { $excel = new \PHPExcel(); $sheet = $excel->getActiveSheet(); $sheet->setCellValueByColumnAndRow(0, 1, static::HEADER_A); $sheet->setCellValueByColumnAndRow(1, 1, static::HEADER_B); $sheet->setCellValueByColumnAndRow(2, 1, static::HEADER_C); $sheet->setCellValueByColumnAndRow(3, 1, static::HEADER_D); $sheet->setCellValueByColumnAndRow(4, 1, static::HEADER_E); $sheet->setCellValueByColumnAndRow(5, 1, static::HEADER_F); $sheet->setCellValueByColumnAndRow(6, 1, static::HEADER_G); $sheet->setCellValueByColumnAndRow(7, 1, static::HEADER_H); foreach([ 'A' => 40, 'B' => 10, 'C' => 5, 'D' => 10, 'E' => 5, 'F' => 7, 'G' => 4, 'H' => 50 ] as $column => $size) { $sheet->getColumnDimension($column) ->setAutoSize(false) ->setWidth((float) $size + 0.83); // For some reason Excel eats up .83 of the columns width, so 40 would become 39.17 } $agenda = YearCalendarItem::get() ->sort('From ASC'); $row = 2; /** @var Agenda $item */ foreach ($agenda as $item) { $from = $item->FromDateTime(); $to = $item->ToDateTime(); $sheet->setCellValueExplicitByColumnAndRow(0, $row, $item->Title); $sheet->setCellValueExplicitByColumnAndRow( 1, $row, $from->format('d-m-Y'), \PHPExcel_Cell_DataType::TYPE_STRING ); $sheet->setCellValueExplicitByColumnAndRow(2, $row, !$item->WholeDay ? $from->format('H:i') : ''); $sheet->setCellValueExplicitByColumnAndRow( 3, $row, $to->format('d-m-Y'), \PHPExcel_Cell_DataType::TYPE_STRING ); $sheet->setCellValueExplicitByColumnAndRow(4, $row, !$item->WholeDay ? $to->format('H:i') : ''); $sheet->setCellValueExplicitByColumnAndRow(5, $row, $item->WholeDay ? static::WHOLE_DAY_YES : static::WHOLE_DAY_NO); $sheet->setCellValueExplicitByColumnAndRow(6, $row, $item->Content); $sheet->setCellValueExplicitByColumnAndRow(7, $row, implode(', ', $item->Tags()->map()->toArray())); ++$row; } $file = new PHPExcel_Writer_Excel2007($excel); $file->save('php://output'); } } |