Как принудительно (перезаписать) расширение файла на phpexcel, на ОС Windows - PullRequest
1 голос
/ 31 октября 2011

В моем приложении PHP я использую phpexcel для динамического создания файла MS Excel.

На некоторых моих компьютерах возникла проблема, поскольку Windows перезаписывает расширение созданного файла XLS и заменяет его на XLSX.

Можете ли вы помочь мне, как я могу "заставить", чтобы расширение файла было XLS, а не XLSX?

header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'. date('Y-m-d') .'.xls"');
header('Cache-Control: max-age=0');
$objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
$objWriter->save('php://output');

Я полагаю, что причина в том, что некоторые браузеры имеют настройки, которые "сохраняют файл без каких-либо вопросов", и из-за этого окна изменяют его расширение.

так, как я могу избежать этого, и сохранять файл всегда и только с расширением XLS.

Ответы [ 2 ]

2 голосов
/ 31 октября 2011

Попробуйте изменить тип MIME на application/vnd.ms-excel (, как показано здесь ).

Я не совсем знаю, но, очевидно, ваш тип MIME в некотором роде неправильный, поскольку он предназначен дляновые офисные форматы на основе xml, расширение файла которых заканчивается на «x».Так что это может быть причиной того, что какая-то закулисная магия переименовывает ваш файл.

1 голос
/ 31 октября 2011

вот что-то,

http://www.givegoodweb.com/post/30/forcing-a-download-with-apache-and-htaccess

надеюсь, что это поможет

<Files *.xls>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>
<Files *.eps>
  ForceType application/octet-stream
  Header set Content-Disposition attachment
</Files>
...