PhpSpreadsheet MimeType генерирует vnd.ms-office вместо vnd.ms-excel - PullRequest
0 голосов
/ 17 октября 2018

Я использую PhpSpreadsheet для создания файла Excel ( .xls ).

, тогда я понимаю, что mimetype сгенерированного файла был application / vnd.ms-office.

Тестирование двумя способами:

Использование этого для прямой загрузки на сервер dir:

<?php
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xls($spreadsheet);

$filename = 'name-of-the-generated-file.xls';
$writer->save(FCPATH . 'extracted/' . $filename);

и использование для загрузки с браузером

<?php
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1', 'Hello World !');

$writer = new Xls($spreadsheet);

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="name-of-the-generated-file.xls"'); 
header('Cache-Control: max-age=0');

$writer->save('php://output');

Я проверяю сгенерированный файл с помощью

echo mime_content_type('name-of-the-generated-file.xls');

, оба кода генерируют MIME application / vnd.ms-office.

как генерировать электронную таблицу с приложением/vnd.ms-excel вместо приложения / vnd.ms-office?

1 Ответ

0 голосов
/ 22 октября 2018

Не доверяйте mime_content_type(), чтобы дать какой-либо осмысленный ответ .... он использует magic.mime для идентификации типов файлов, и в нем используется упрощенный подход (обычно основанный всего на нескольких байтах), который не вникаетслишком глубоко в структуру самого файла.При отправке файла в браузер, заголовок Content Type сообщает браузеру, как обрабатывать файл, и правильные типы MIME для отправки в Excel: application/vnd.ms-excel для файлов xls и application/vnd.openxmlformats-officedocument.spreadsheetml.sheet для файлов xlsx.

...