PHP导出Excel工作表的MIME类型有什么问题?

PHP导出Excel工作表的MIME类型有什么问题?,php,excel,export,mime,Php,Excel,Export,Mime,此输出存在问题。当用户点击按钮时,它应该会弹出一张excel表格。然而,对于一些用户来说,它会弹出一个HTML页面。我觉得这与其他用户使用IE7而不是IE10有关。但是,此功能应适用于这两种情况 请帮忙 如果您能发现错误,请告诉我: $time = time(); $illegals = array('!', '*', "'", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]", "\""); if(

此输出存在问题。当用户点击按钮时,它应该会弹出一张excel表格。然而,对于一些用户来说,它会弹出一个HTML页面。我觉得这与其他用户使用IE7而不是IE10有关。但是,此功能应适用于这两种情况

请帮忙

如果您能发现错误,请告诉我:

$time = time();
$illegals = array('!', '*', "'", ";", ":", "@", "&", "=", "+", "$", ",", "/", "?", "%", "#", "[", "]", "\"");
if(isset($_GET['ns_title'])) {$filename = str_replace($illegals,"",urldecode($_GET['ns_title'])).".xls"; } else { $filename = "myreport$time.xls"; }
header("Content-type: application/force-download"); 
header("Content-Transfer-Encoding: Binary");    
header("Content-type: application/octet-stream");
header('Content-Disposition: attachment; filename="'.$filename.'"'); 
header("Expires: 0");

print "$headers\n$data";

您正在指定两种类型的
内容类型
——坚持使用
应用程序/八位字节流
或提供实际的Excel内容类型(参见Bastien的回答)

其次,什么是
$headers
$data
?我们假设您使用的是那些认为他们设置了头的人,但是
header()
已经这样做了


如果是真实文件,可以使用
readfile($filename)
,或者简单地回显您要启动浏览器下载的内容。

试试这个官方MIME类型
应用程序/vnd.ms excel

$headers
$data
变量中有什么?这是通过ssl连接的吗?我猜$headers是包含一组列标题的tsv字符串,$data是一个多行tsv字符串,包含要写入的数据$headers和$data变量是从会话页面调用的全局变量。我不认为这些是导致导出问题的原因,但我还是在这里寻求帮助。我也尝试过使用它:header(“Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet”)@John-除非您的数据是OfficeOpenXML格式的.xlsx文件,否则您不应该使用
application/vnd.openxmlformats officedocument.spreadsheetml.sheet
;如果您的数据是BIFF格式的.xls文件,则
application/vnd.ms excel
是正确的mime类型;但我很确定您的数据并没有跟进这一点:浏览器在如何处理XYZ文件类型方面有自己的配置。您只能提供浏览器所期望的文件类型-它将根据标头中提供的类型处理/配置它。