$projektid] ); $projektname = str_replace(',', '', $_projekt[0]['name']); $projektname = preg_replace("'\W, '", '', $projektname); $file = file_get_contents(__DIR__.'/excel_header.txt'); $file = preg_replace("/[\n\r]/", '', $file); $_headers = explode(',', $file); // // // Create new Spreadsheet object $spreadsheet = new Spreadsheet(); // Set document properties $spreadsheet->getProperties()->setCreator('Hermann Telser Nutzwertberechnung') ->setLastModifiedBy('Hermann Telser Nutzwertberechnung') ->setTitle('Nutzwertberechnung') ->setDescription('Nutzwertberechnung v10.1.3, © Hermann Telser 2007 - 2023'); // $_rot = [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 90, 91, 92, 93]; // $_gelb = [8, 19, 29]; $_rot = [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 91, 92, 93, 94]; $_gelb = [8, 19, 29]; $row = '1'; $coll = 'A'; foreach ($_headers as $key => $value) { $cell = $coll.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value); if (\in_array($key, $_rot)) { $spreadsheet->getActiveSheet()->getStyle($cell)->getFont()->getColor()->setARGB('ffffff'); $spreadsheet->getActiveSheet()->getStyle($cell)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('ff0000'); } elseif (\in_array($key, $_gelb)) { $spreadsheet->getActiveSheet()->getStyle($cell)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('ffff00'); } $spreadsheet->getActiveSheet() ->getStyle($cell) ->getBorders() ->getBottom() ->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK); ++$coll; } $_objekte_all = ObjekteExcel::select($projektid); // print_r($_objekte_all); // exit; $row = 2; foreach ($_objekte_all as $key => $value) { $tt_raume_basis_id = $value['id']; $cell = 'B'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['topNr']); if (0 == $value['nodspl']) { $cell = 'C'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['GNO']); $cell = 'D'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['qmM1']); // M2 $_methode_2 = DbFunction::selectJoin( 'tx_gutachten_raume_all', ['[>]tx_gutachten_raume_generell' => 'tt_raumart_id'], [ 'tx_gutachten_raume_all.uid', 'tx_gutachten_raume_all.geschoss', 'tx_gutachten_raume_all.raum', 'tx_gutachten_raume_all.factor', 'tx_gutachten_raume_all.qm', 'tx_gutachten_raume_all.NW', 'tx_gutachten_raume_all.NWungerundet', 'tx_gutachten_raume_all.NWm2', 'tx_gutachten_raume_all.uid', 'tx_gutachten_raume_all.timestamp', 'tx_gutachten_raume_generell.zunutzwert', ], [ 'AND' => [ 'tx_gutachten_raume_all.tt_raumart_id' => [2, 8], 'tx_gutachten_raume_all.tt_raume_basis_id' => $tt_raume_basis_id, 'tx_gutachten_raume_all.pid' => $projektid, 'tx_gutachten_raume_generell.pid' => $projektid, ], 'ORDER' => 'tx_gutachten_raume_all.raum', ] ); $zunutzwert = 0; foreach ($_methode_2 as $k => $v) { //if($b['tt_raumart_id']==2) //M2 //{ // $summeM2_factor += $b['NWm2']; //} //else //M2b //{ // $summeM2_ohne_factor += $b['NWm2']; //} if (1 == $v['zunutzwert']) { $zunutzwert += $v['qm']; } } if ($zunutzwert > 0) { $cell = 'E'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $zunutzwert); } $cell = 'F'.$row; $gesamt = $value['qmM1'] + $zunutzwert; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $gesamt); } else { $cell = 'I'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['GNO']); // STELLPLATZ qm // Methode 5 $_m5 = DbFunction::select('tx_gutachten_raume_all', ['qm','raum'], ['AND' => ['tt_raume_basis_id' => $tt_raume_basis_id, 'tt_raumart_id' => 5]]); $_qm = 0; $raum = ''; foreach ($_m5 as $k => $m5) { $_qm += (float) $m5['qm']; $raum = (string) $m5['raum']; } // echo "\n" . $raum; $cell = 'L'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, number_format($_qm, 2, ',', '')); $cell = 'AT'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, "SALAM " . $raum); } // Parifizierer $cell = 'R'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $_projekt[0]['gutachter']); // LAGE $_lage = Select::raume_all($projektid, $tt_raume_basis_id, 1); $cell = 'AQ'.$row; $lage = $_lage[0]['geschoss'] ?? ''; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $lage); $cell = 'AR'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['orientierung']); // WOHNUNG if (0 == $value['nodspl']) { // BESCHREIBUNG $_beschreibung = Select::raume_all($projektid, $tt_raume_basis_id, [1, 2, 8]); if (\count($_beschreibung) > 0) { $_tmp = []; // print_r($_beschreibung); foreach ($_beschreibung as $key => $value) { if (!\in_array($value['raum'], ['Loggia', 'Loggia 1', 'Loggia 2'])) { $_tmp[] = $value['raum']; } } $beschreibung = implode(', ', $_tmp); $cell = 'AT'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $beschreibung); } // M2 if (\count($_methode_2) > 0) { $_tmp = []; foreach ($_methode_2 as $key => $value) { if (\in_array($value['raum'], ['Loggia', 'Loggia 1', 'Loggia 2'])) { $_tmp[] = $value['raum'].': '.number_format($value['qm'], 2, ',', '').' m²'; } } $beschreibung = implode(', ', $_tmp); $cell = 'AU'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $beschreibung); } // M3 $_m3 = Select::raume_all($projektid, $tt_raume_basis_id, [3, 7]); if (\count($_m3) > 0) { $_tmp = []; foreach ($_m3 as $key => $value) { $_tmp[] = $value['raum'].' '.number_format($value['qm'], 2, ',', '').' m²'; } $m3 = implode(', ', $_tmp); $cell = 'AV'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $m3); } // M4 $_m4 = Select::raume_all($projektid, $tt_raume_basis_id, 4); if (\count($_m4) > 0) { $_tmp = []; foreach ($_m4 as $key => $value) { $_tmp[] = $value['raum'].' '.number_format($value['qm'], 2, ',', '').' m²'; } $m4 = implode(', ', $_tmp); $cell = 'AW'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $m4); } } else { // Methode 5a & Methode 5b // $_m56 = Select::raume_all($projektid, $tt_raume_basis_id, [5, 6, 9]); $_m56 = DbFunction::select('tx_gutachten_raume_all', ['qm','raum'], ['AND' => ['tt_raume_basis_id' => $tt_raume_basis_id, 'tt_raumart_id' => [5, 6, 9] ],'ORDER' => ['tt_raumart_id' => 'ASC']]); if (\count($_m56) > 0) { $tmp1 = $_m56[0]['raum']; $cell = 'AT'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $tmp1); if(isset($_m56[1])){ $tmp2 = $_m56[1]['raum'] . ' ' . number_format($_m56[1]['qm'], 2, ',', '').' m²'; $cell = 'AV'.$row; $spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $tmp2); } } } ++$row; } // exit; // Set active sheet index to the first sheet, so Excel opens this as the first sheet $spreadsheet->setActiveSheetIndex(0); // Rename worksheet $spreadsheet->getActiveSheet()->setTitle('Daten für den Kaufvertrag'); // Redirect output to a client’s web browser (Xls) header('Content-Type: application/vnd.ms-excel'); header('Content-Disposition: attachment;filename="'.$projektname.'.xlsx"'); header('Cache-Control: max-age=0'); // If you're serving to IE 9, then the following may be needed header('Cache-Control: max-age=1'); // If you're serving to IE over SSL, then the following may be needed header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1 header('Pragma: public'); // HTTP/1.0 // Xls $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); exit; } }