如何在Windows操作系统的phpexcel上强制(覆盖)文件扩展名

如何在Windows操作系统的phpexcel上强制(覆盖)文件扩展名,php,file-extension,phpexcel,Php,File Extension,Phpexcel,在我的PHP应用程序中,我使用phpexcel动态创建MS Excel文件 在我的一些PC-s上,我遇到了一个问题,因为Windows覆盖了生成的XLS文件的扩展名,并将其更改为XLSX 你能帮我怎么才能“强制”,文件扩展名是XLS而不是XLSX吗 header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); header('Content-Disposition: attac

在我的PHP应用程序中,我使用phpexcel动态创建MS Excel文件

在我的一些PC-s上,我遇到了一个问题,因为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');
我猜原因是一些浏览器设置了“毫无疑问地保存文件”,并且由于windows更改了它的扩展名

所以,我如何避免它,并且始终只保存扩展名为XLS的文件。

这里有一个问题

希望能有帮助

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

ForceType应用程序/八位组流
标题集内容处置附件
ForceType应用程序/八位组流
标题集内容处置附件

尝试将MIME类型更改为
应用程序/vnd.ms excel
()


我真的不知道,但很明显,您的MIME类型有点错误,因为它适用于新的基于xml的office格式,其文件扩展名以“x”结尾。因此,这可能是一些幕后魔术重命名您的文件的原因。

显然,这种解决方案可行,但实际上并不正确。它将php脚本设置的内容类型覆盖为避免重命名的内容类型,但仍然不能表示此类文档的正确类型。请注意,您将失去使用脚本更改以扩展名.xls和.eps结尾的所有文件的内容类型的机会,因为apache将始终覆盖您的标题。所以我认为这是一个快速而肮脏的解决方案。