composer require phpoffice/phpspreadsheet
cat <<EOT> 1.php
<?php
require 'vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
\$spreadsheet = new Spreadsheet();
\$activeWorksheet = \$spreadsheet->getActiveSheet();
\$activeWorksheet->setCellValue('A1', 'Hello World !');
\$writer = new Xlsx(\$spreadsheet);
\$writer->save('hello world.xlsx');
EOT
#
$filename = 'doc_' . date('Y-m-d-H-i-s') . '.xlsx';
header("Content-type: text/xlsx");
header("Cache-Control: no-store, no-cache");
header('Content-Disposition: attachment; filename="' . $filename . '"');
#
$spreadsheet = new Spreadsheet();
$activeWorksheet = $spreadsheet->getActiveSheet();
$activeWorksheet->setTitle('Отчет');
$spreadsheet->getActiveSheet()->getStyle('A1:S1')->getFont()->setBold(true)->setSize(12);
for ($i = 'A'; $i != $spreadsheet->getActiveSheet()->getHighestColumn(); $i++) {
$spreadsheet->getActiveSheet()->getColumnDimension($i)->setWidth('17');
}
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');