После некоторого поиска проблема заключалась в том, что я устанавливал стили после отправки заголовков, чтобы файл загружался до установки стилей, поэтому я должен был установить стили перед заголовками, поэтому код должен быть таким:
function translatorscity_xslx_export_users($header, $data){
//Get number of rows
$dataCount = count($data) + 1;
$spreadsheet = new Spreadsheet();
//Set sheet meta data
$spreadsheet->getProperties()
->setCreator("Translators City")
->setLastModifiedBy("Translators City")
->setTitle("Translators City's users data")
->setSubject("These are users data exported from translatorscity.com")
->setDescription(
"Program created by mo7amed.maki@gmail.com"
)
->setKeywords("data")
->setCategory("users");
$sheet = $spreadsheet->getActiveSheet();
//Set column width to auto
$sheet->getColumnDimension('A')->setAutoSize(true);
$sheet->getColumnDimension('B')->setAutoSize(true);
$sheet->getColumnDimension('C')->setAutoSize(true);
$sheet->getColumnDimension('D')->setAutoSize(true);
//Set table outer borders
$styleArray = [
'font' => [
'bold' => true,
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
'borders' => [
'top' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
'right' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
'bottom' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
'left' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
],
];
$sheet->getStyle('A1:D'.$dataCount.'')->applyFromArray($styleArray);
//Set header outer borders
$styleArray = [
'font' => [
'bold' => true,
'size' => 18,
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
'borders' => [
'top' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
'right' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
'bottom' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
'left' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK,
],
],
];
$sheet->getStyle('A1:D1')->applyFromArray($styleArray);
//Fill data
$sheet->fromArray($header, NULL, 'A1');
$sheet->fromArray($data, NULL, 'A2');
// redirect output to client browser
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="translatorscity-users-'.gmdate('Y-d-m-h-i-sa').'.xlsx"');
header('Cache-Control: max-age=0');
header("Content-Transfer-Encoding: binary");
//Write and save
$writer = new Xlsx($spreadsheet);
$writer->save('php://output');
# Free Memory
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
exit;
}