我正在开发一个功能,我向用户证明了excel转储。当用户下载excel表时,它可以正常工作。用户尝试使用Microsoft Excel打开时,它会给我一个错误“Excel无法打开文件,因为文件格式或扩展名无效”这只发生在firefox浏览器中,并且文件名中会自动添加.xlsx扩展名。< / p>
我用来创建excel转储的代码是
header('Pragma: public');
header("Expires: Mon, 12 Jul 2012 05:00:00 GMT"); // Date in the past
header('Content-Disposition: attachment; filename="excel.xls"');
header('Last-Modified: '.gmdate('D, d M Y H:i:s') . ' GMT');
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
header('Cache-Control: pre-check=0, post-check=0, max-age=0');
$header = "Date\t";
$header .= "Other Details Details\t";
echo $header . "\n";
echo "Date1\t";
echo "Detail1\t\n";
echo "Date2\t";
echo "Detail2\t\n";
答案 0 :(得分:0)
我遇到了以下(不匹配)响应头的确切问题:
Content-Disposition: attachment; filename="excel.xls"
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
内容类型indicates是.xslx文件,这显然会导致Firefox添加.xslx扩展名。 Excel显示此错误是因为文件扩展名(由Firefox附加)为.xslx,而文件格式为xls。
要解决此问题,请将内容类型更改为:
Content-Type: application/vnd.ms-excel