Мне нужно сгенерировать файл Excel (xls) и инициировать загрузку после его создания. Я нашел этот пример в документации .
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
. Здесь показано, как создать файл Excel и сохранить его на сервере. Как я могу вместо этого передать результат клиенту и «заставить» его загрузить? Мне нужно как-то получить данные $writer
.
Я сейчас решаю их без PhpSpreadsheet:
// Excel Export
$filename = 'export_'.date('d-m-y').'.xls';
$filename = $validator->removeWhitespace($filename);
header('Content-type: application/ms-excel');
header('Content-Disposition: attachment; filename='.$filename);
exit($response["output"]); // <-- contains excel file content
Но это не работает с моим разделителем (точка с запятой). Точка с запятой не интерпретируется, и все записывается в один столбец.
Если я экспортирую его как .csv, то это сработает. Но мне нужно это как .xls или .xlsx