Improved the export feature to allow bulk custom overide, and dynamic behaviour towards larger sets. Added function name to custom buttons as a class for CSS styling.
This commit is contained in:
@ -6309,6 +6309,8 @@ abstract class ComponentbuilderHelper
|
||||
->setLastModifiedBy($modified)
|
||||
->setTitle($title)
|
||||
->setSubject($subjectTab);
|
||||
// The file type
|
||||
$file_type = 'Xls';
|
||||
// set description
|
||||
if ($description)
|
||||
{
|
||||
@ -6348,21 +6350,46 @@ abstract class ComponentbuilderHelper
|
||||
));
|
||||
|
||||
// Add some data
|
||||
if (self::checkArray($rows))
|
||||
if (($size = self::checkArray($rows)) !== false)
|
||||
{
|
||||
$i = 1;
|
||||
foreach ($rows as $array){
|
||||
|
||||
// Based on data size we adapt the behaviour.
|
||||
$xls_mode = 1;
|
||||
if ($size > 3000)
|
||||
{
|
||||
$xls_mode = 3;
|
||||
$file_type = 'Csv';
|
||||
}
|
||||
elseif ($size > 2000)
|
||||
{
|
||||
$xls_mode = 2;
|
||||
}
|
||||
|
||||
// Set active sheet and get it.
|
||||
$active_sheet = $spreadsheet->setActiveSheetIndex(0);
|
||||
foreach ($rows as $array)
|
||||
{
|
||||
$a = 'A';
|
||||
foreach ($array as $value){
|
||||
$spreadsheet->setActiveSheetIndex(0)->setCellValue($a.$i, $value);
|
||||
if ($i == 1){
|
||||
$spreadsheet->getActiveSheet()->getColumnDimension($a)->setAutoSize(true);
|
||||
$spreadsheet->getActiveSheet()->getStyle($a.$i)->applyFromArray($headerStyles);
|
||||
$spreadsheet->getActiveSheet()->getStyle($a.$i)->getAlignment()->setHorizontal(PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
||||
} elseif ($a === 'A'){
|
||||
$spreadsheet->getActiveSheet()->getStyle($a.$i)->applyFromArray($sideStyles);
|
||||
} else {
|
||||
$spreadsheet->getActiveSheet()->getStyle($a.$i)->applyFromArray($normalStyles);
|
||||
foreach ($array as $value)
|
||||
{
|
||||
$active_sheet->setCellValue($a.$i, $value);
|
||||
if ($xls_mode != 3)
|
||||
{
|
||||
if ($i == 1)
|
||||
{
|
||||
$active_sheet->getColumnDimension($a)->setAutoSize(true);
|
||||
$active_sheet->getStyle($a.$i)->applyFromArray($headerStyles);
|
||||
$active_sheet->getStyle($a.$i)->getAlignment()->setHorizontal(PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
|
||||
}
|
||||
elseif ($a === 'A')
|
||||
{
|
||||
$active_sheet->getStyle($a.$i)->applyFromArray($sideStyles);
|
||||
}
|
||||
elseif ($xls_mode == 1)
|
||||
{
|
||||
$active_sheet->getStyle($a.$i)->applyFromArray($normalStyles);
|
||||
}
|
||||
}
|
||||
$a++;
|
||||
}
|
||||
@ -6382,7 +6409,7 @@ abstract class ComponentbuilderHelper
|
||||
|
||||
// Redirect output to a client's web browser (Excel5)
|
||||
header('Content-Type: application/vnd.ms-excel');
|
||||
header('Content-Disposition: attachment;filename="'.$fileName.'.xls"');
|
||||
header('Content-Disposition: attachment;filename="' . $fileName . '.' . strtolower($file_type) .'"');
|
||||
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');
|
||||
@ -6393,7 +6420,7 @@ abstract class ComponentbuilderHelper
|
||||
header ('Cache-Control: cache, must-revalidate'); // HTTP/1.1
|
||||
header ('Pragma: public'); // HTTP/1.0
|
||||
|
||||
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
|
||||
$writer = IOFactory::createWriter($spreadsheet, $file_type);
|
||||
$writer->save('php://output');
|
||||
jexit();
|
||||
}
|
||||
|
Reference in New Issue
Block a user