$value) { $data[$key] = $key; } return $data; } if($_GET['o']=='excel') { // Name we want to sort by and display if($_GET['t']!='demandeur') { $sortName = 'name'; } else { $sortName = 'reqname'; } $spreadsheet = new Spreadsheet(); // Set properties $spreadsheet->getProperties()->setCreator("Caribana festival"); $spreadsheet->getProperties()->setLastModifiedBy("Caribana festival"); $spreadsheet->getProperties()->setTitle("Accréditations " . $cfg['year']); $spreadsheet->getProperties()->setSubject("Accréditations " . $cfg['year']); $spreadsheet->getProperties()->setDescription("Accréditations " . $cfg['year']); $spreadsheet->setActiveSheetIndex(0); $query = "select * from submissions"; $mysqli = new mysqli($cfg['host'], $cfg['user'],$cfg['pass'], $cfg['name']); if ($mysqli->connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } if ($result = $mysqli->query($query)) { $line = 1; // First merge keys of all serialized values and build an array containing all columns // (even if they are empty on first line... -> no key) while ($row = $result->fetch_assoc()) { $ser = $row['formdata']; $seru = unserialize($ser); $or = array_merge($row,$seru); if($line==1) { $master_array = $or; } $master_array = merge_two_arrays($master_array,$or); $line++; } // Now remove unwanted columns foreach($master_array as $key => $val ) { if(!($key=='UID' || $key=='modifieduid' || $key=='btnsubmit' || $key=='btnfinalise' || $key=='btnprocess' || $key=='formdata' || $key=='name_form')) { $header[$key] = $key; } } } // Now we have a array with all the keys/columns we want to export to Excel if ($result = $mysqli->query($query)) { $line = 1; /* fetch associative array */ while ($row = $result->fetch_assoc()) { $ser = $row['formdata']; $seru = unserialize($ser); $or = array_merge($row,$seru); // Build full row unset($fr); foreach($header as $key => $val) { if($key=='status') { $disp = 'Indéfini'; switch($or[$key]) { case 0: $disp = 'Finalisé'; break; case 1: $disp = 'Ouvert'; break; case 3: $disp = 'Traité'; break; } $fr[$key] = $disp; } else { $fr[$key] = $or[$key]; } } if($line==1) { $keys = array_keys ( $header ); $spreadsheet->getActiveSheet() ->fromArray( $keys, // The data to set NULL, // Array values with this value will not be set 'A1' // Top left coordinate of the worksheet range where // we want to set these values (default is A1) ); $line++; } $spreadsheet->getActiveSheet() ->fromArray( $fr, // The data to set NULL, // Array values with this value will not be set 'A'.$line // Top left coordinate of the worksheet range where // we want to set these values (default is A1) ); $line++; } } $spreadsheet->getActiveSheet()->getStyle('1')->getFont()->setBold(true); $spreadsheet->getActiveSheet()->setTitle('Toutes demandes'); foreach (range('A','Z') as $col) { $spreadsheet->getActiveSheet()->getColumnDimension($col)->setAutoSize(true); } foreach (range('A','E') as $col) { $spreadsheet->getActiveSheet()->getColumnDimension('A'.$col)->setAutoSize(true); } // Add totals // $highestRow = $spreadsheet->getActiveSheet()->getHighestRow(); $coord = 'N' . ($highestRow+2); $spreadsheet->getActiveSheet()->setCellValue($coord, 'TOTAL'); foreach(range('O','Z') as $col) { $spreadsheet->getActiveSheet()->setCellValue($col.($highestRow+2), '=SUM('.$col.'2:'.$col.($highestRow).')'); } // Do AA $spreadsheet->getActiveSheet()->setCellValue('AA'.($highestRow+2), '=SUM(AA2:AA'.($highestRow).')'); // Format the total $spreadsheet->getActiveSheet()->getStyle($coord.':AA'.($highestRow+2))->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('AAAAAAAA'); // ------ // Go again this time sorted by name so we can create a worksheet per requestor $query = "SELECT * from submissions ORDER BY $sortName"; if ($result = $mysqli->query($query)) { $line = 1; /* fetch associative array */ while ($row = $result->fetch_assoc()) { $ser = $row['formdata']; $seru = unserialize($ser); $or = array_merge($row,$seru); // Build full row unset($fr); foreach($header as $key => $val) { if($key=='status') { $disp = 'Indéfini'; switch($or[$key]) { case 0: $disp = 'Finalisé'; break; case 1: $disp = 'Ouvert'; break; case 3: $disp = 'Traité'; break; } $fr[$key] = $disp; } else { $fr[$key] = $or[$key]; } } if($prevName!=$fr[$sortName]) { $keys = array_keys ( $header ); // Create new worksheet if($prevSheet) { // Add totals // // $highestRow = $prevSheet->getHighestRow(); $coord = 'N' . ($highestRow+2); $prevSheet->setCellValue($coord, 'TOTAL'); foreach(range('O','Z') as $col) { $prevSheet->setCellValue($col.($highestRow+2), '=SUM('.$col.'2:'.$col.($highestRow).')'); } // Do AA $prevSheet->setCellValue('AA'.($highestRow+2), '=SUM(AA2:AA'.($highestRow).')'); // Format the total $prevSheet->getStyle($coord.':AA'.($highestRow+2))->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('BBBBBBBB'); } $prevSheet = $spreadsheet->getActiveSheet(); $myWorkSheet = $spreadsheet->createSheet(); $myWorkSheet->setTitle($fr[$sortName]); $myWorkSheet ->fromArray( $keys, // The data to set NULL, // Array values with this value will not be set 'A1' // Top left coordinate of the worksheet range where // we want to set these values (default is A1) ); $myWorkSheet->getStyle('1')->getFont()->setBold(true); $line=2; $prevName = $fr[$sortName]; } $myWorkSheet ->fromArray( $fr, // The data to set NULL, // Array values with this value will not be set 'A'.$line // Top left coordinate of the worksheet range where // we want to set these values (default is A1) ); $line++; } } foreach (range('A','Z') as $col) { $myWorkSheet->getColumnDimension($col)->setAutoSize(true); } foreach (range('A','E') as $col) { $spreadsheet->getActiveSheet()->getColumnDimension('A'.$col)->setAutoSize(true); } // Put totals on last sheet // Add totals // // $highestRow = $spreadsheet->getActiveSheet()->getHighestRow(); $coord = 'N' . ($highestRow+2); $spreadsheet->getActiveSheet()->setCellValue($coord, 'TOTAL'); foreach(range('O','Z') as $col) { $spreadsheet->getActiveSheet()->setCellValue($col.($highestRow+2), '=SUM('.$col.'2:'.$col.($highestRow).')'); } // Do AA $spreadsheet->getActiveSheet()->setCellValue('AA'.($highestRow+2), '=SUM(AA2:AA'.($highestRow).')'); // Format the total $spreadsheet->getActiveSheet()->getStyle($coord.':AA'.($highestRow+2))->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('AAAAAAAA'); $mysqli->close(); // ------- $filename = 'accred_list.xlsx'; header('Content-Disposition: attachment; filename="' . $filename . '"'); header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=utf-8'); // header('Content-Length: ' . filesize($filename)); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate'); header('Pragma: public'); $writer = IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output'); exit(); } ?> Carbana Acréditations connect_errno) { echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error; } ?> >
Bienvenue
Le formulaire est ouvert, les utilisateurs peuvent modifier ou ajouter des demandes
Le formulaire est fermé, les utilisateurs ne peuvent plus modifier ou ajouter des demandes

Commande

NoStatSalutationPrenomNomStatutCommandeAperçuCréationMise à jourCommandé par

Déconnexion