Migration vers phpspreadsheet et fix nom du demandeur

This commit is contained in:
lars
2019-05-01 17:24:18 +02:00
parent c671fda638
commit 05c0b9a1af
3 changed files with 92 additions and 24 deletions

View File

@@ -19,6 +19,9 @@
header("location: index?");
}
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
require_once 'vendor/autoload.php';
define('TMP_FILES', "/tmp/"); // temp folder where it stores the files into.
@@ -34,15 +37,15 @@
if($_GET['o']=='excel') {
$objPHPExcel = new PHPExcel();
$spreadsheet = new Spreadsheet();
// Set properties
$objPHPExcel->getProperties()->setCreator("Caribana festival");
$objPHPExcel->getProperties()->setLastModifiedBy("Caribana festival");
$objPHPExcel->getProperties()->setTitle("Accréditations " . $cfg['year']);
$objPHPExcel->getProperties()->setSubject("Accréditations " . $cfg['year']);
$objPHPExcel->getProperties()->setDescription("Accréditations " . $cfg['year']);
$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']);
$objPHPExcel->setActiveSheetIndex(0);
$spreadsheet->setActiveSheetIndex(0);
$query = "select * from submissions";
$mysqli = new mysqli($cfg['host'], $cfg['user'],$cfg['pass'], $cfg['name']);
@@ -101,7 +104,7 @@ $line = 1;
}
if($line==1) {
$keys = array_keys ( $header );
$objPHPExcel->getActiveSheet()
$spreadsheet->getActiveSheet()
->fromArray(
$keys, // The data to set
NULL, // Array values with this value will not be set
@@ -111,7 +114,7 @@ $line = 1;
$line++;
}
$objPHPExcel->getActiveSheet()
$spreadsheet->getActiveSheet()
->fromArray(
$fr, // The data to set
NULL, // Array values with this value will not be set
@@ -124,9 +127,28 @@ $objPHPExcel->getActiveSheet()
}
$objPHPExcel->getActiveSheet()->getStyle('1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->setTitle('Toutes accréditations');
$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
@@ -165,10 +187,28 @@ $line = 1;
}
if($prevName!=$fr['name']) {
$keys = array_keys ( $header );
// Create new workshet
$myWorkSheet = new PHPExcel_Worksheet($objPHPExcel, $fr['name']);
$objPHPExcel->addSheet($myWorkSheet);
$myWorkSheet
// 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['name']);
$myWorkSheet
->fromArray(
$keys, // The data to set
NULL, // Array values with this value will not be set
@@ -192,21 +232,44 @@ $line = 1;
}
}
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();
// -------
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$filename = 'accred_list.xlsx';
$objWriter->save($filename);
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-Length: ' . filesize($filename));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$objWriter->save('php://output');
readfile($filename);
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit();
}
?>