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

@ -149,7 +149,7 @@ die();
$query .= " AND UID=$userid";
}
if (!$result = $mysqli->query($query) ) {
echo "Table creation failed: (" . $mysqli->errno . ") " . $mysqli->error;
echo "Table read failed: (" . $mysqli->errno . ") " . $mysqli->error;
die("Argh");
}
@ -166,6 +166,8 @@ die();
header("location: accred_list");
die();
}
// Retrieve the name of the original requestor
$reqName = $row['name'];
}
// instantiate a Zebra_Form object
$form = new Zebra_Form('form');
@ -176,7 +178,7 @@ die();
$forWho = $_SESSION['name'];
}
else {
$ti = 'Commande par '.$_SESSION['name'] . ', créée le '.$row['created'];
$ti = 'Commande par '.$reqName. ', créée le '.$row['created'];
$forWho = $ar['demande_pour'];
}
if($isAdmin) {

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();
}
?>

View File

@ -53,7 +53,10 @@
foreach($seru as $key=>$val) {
$one[$key] = $val;
}
$one['name'] = $row["name"];
$one['name'] = $row["name"];
if($one['demande_pour'] != $row["name"]) {
$one['name'] .= ' / ' . $one['demande_pour'];
}
$obj['data'][] = $one;
}