From 482868616298ebdf5e59b2314fe590763ddf76bf Mon Sep 17 00:00:00 2001 From: lars Date: Wed, 15 May 2019 22:39:05 +0200 Subject: [PATCH] fix affichage totaux dans export Excel --- accred_list.php | 43 +++++++++++++++++++++++++++---------------- 1 file changed, 27 insertions(+), 16 deletions(-) diff --git a/accred_list.php b/accred_list.php index 275fe268..d9214b7d 100644 --- a/accred_list.php +++ b/accred_list.php @@ -153,10 +153,11 @@ foreach(range('P','Z') as $col) { foreach(range('A','B') as $col) { $spreadsheet->getActiveSheet()->setCellValue('A'.$col.($highestRow+2), '=SUM(A'.$col.'2:A'.$col.($highestRow).')'); } -// Do AA and AB -// $spreadsheet->getActiveSheet()->setCellValue('AA'.($highestRow+2), '=SUM(AA2:AA'.($highestRow).')'); + + + // Format the total -$spreadsheet->getActiveSheet()->getStyle($coord.':AA'.($highestRow+2))->getFill() +$spreadsheet->getActiveSheet()->getStyle($coord.':AB'.($highestRow+2))->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('AAAAAAAA'); @@ -168,6 +169,7 @@ if ($result = $mysqli->query($query)) { $line = 1; /* fetch associative array */ + $prevSheet = null; while ($row = $result->fetch_assoc()) { $ser = $row['formdata']; $seru = unserialize($ser); @@ -196,10 +198,10 @@ if ($result = $mysqli->query($query)) { } if($prevName!=$fr[$sortName]) { - $keys = array_keys ( $header ); + $keys = array_keys ( $header ); // Create new worksheet - if($prevSheet) { - // Add totals + if($prevSheet) { + // Add totals // // $highestRow = $prevSheet->getHighestRow(); $coord = 'O' . ($highestRow+2); @@ -207,22 +209,28 @@ if ($result = $mysqli->query($query)) { foreach(range('P','Z') as $col) { $prevSheet->setCellValue($col.($highestRow+2), '=SUM('.$col.'2:'.$col.($highestRow).')'); } - // Do AA + // Do AA and AB foreach(range('A','B') as $col) { $prevSheet->setCellValue('A'.$col.($highestRow+2), '=SUM(A'.$col.'2:A'.$col.($highestRow).')'); } -// $prevSheet->setCellValue('AA'.($highestRow+2), '=SUM(AA2:AA'.($highestRow).')'); // Format the total - $prevSheet->getStyle($coord.':AA'.($highestRow+2))->getFill() + $prevSheet->getStyle($coord.':AB'.($highestRow+2))->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('BBBBBBBB'); } $prevSheet = $spreadsheet->getActiveSheet(); - $myWorkSheet = $spreadsheet->createSheet(); +$prevSheet = $myWorkSheet; + $myWorkSheet = $spreadsheet->createSheet(); $myWorkSheet->setTitle($fr[$sortName]); - $myWorkSheet + foreach (range('A','Z') as $col) { + $myWorkSheet->getColumnDimension($col)->setAutoSize(true); + } + foreach (range('A','E') as $col) { + $myWorkSheet->getColumnDimension('A'.$col)->setAutoSize(true); + } + $myWorkSheet ->fromArray( $keys, // The data to set NULL, // Array values with this value will not be set @@ -231,8 +239,9 @@ if ($result = $mysqli->query($query)) { ); $myWorkSheet->getStyle('1')->getFont()->setBold(true); $line=2; - $prevName = $fr[$sortName]; - } + + $prevName = $fr[$sortName]; + } $myWorkSheet ->fromArray( @@ -262,10 +271,12 @@ $spreadsheet->getActiveSheet()->setCellValue($coord, 'TOTAL'); foreach(range('P','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).')'); +foreach(range('A','B') as $col) { + $spreadsheet->getActiveSheet()->setCellValue('A'.$col.($highestRow+2), '=SUM(A'.$col.'2:A'.$col.($highestRow).')'); +} + // Format the total - $spreadsheet->getActiveSheet()->getStyle($coord.':AA'.($highestRow+2))->getFill() + $spreadsheet->getActiveSheet()->getStyle($coord.':AB'.($highestRow+2))->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor()->setARGB('AAAAAAAA');