Intenal: Fix XLSX export generation using PHPSpreadsheet - refs BT#21957

pull/5881/head
christianbeeznst 4 months ago
parent 2d48614619
commit 3216066853
  1. 30
      public/main/inc/lib/export.lib.inc.php

@ -2,11 +2,8 @@
/* See license terms in /license.txt */
//use Chamilo\CoreBundle\Component\Editor\Connector;
//use MediaAlchemyst\Alchemyst;
//use MediaAlchemyst\DriversContainer;
use Neutron\TemporaryFilesystem\Manager;
use Neutron\TemporaryFilesystem\TemporaryFilesystem;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use Sonata\Exporter\Handler;
use Sonata\Exporter\Source\ArraySourceIterator;
use Sonata\Exporter\Writer\CsvWriter;
@ -60,21 +57,28 @@ class Export
/**
* Export tabular data to XLS-file.
*
* @param array $data
* @param string $filename
*/
public static function arrayToXls($data, $filename = 'export')
public static function arrayToXls(array $data, string $filename = 'export')
{
if (empty($data)) {
return false;
}
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$rowNumber = 1;
foreach ($data as $row) {
$colNumber = 'A';
foreach ($row as $cell) {
$sheet->setCellValue($colNumber . $rowNumber, $cell);
$colNumber++;
}
$rowNumber++;
}
$filePath = api_get_path(SYS_ARCHIVE_PATH).uniqid('').'.xlsx';
$writer = new XlsWriter($filePath);
$source = new ArraySourceIterator($data);
$handler = Handler::create($source, $writer);
$handler->export();
$writer = new Xlsx($spreadsheet);
$writer->save($filePath);
DocumentManager::file_send_for_download($filePath, true, $filename.'.xlsx');
exit;

Loading…
Cancel
Save