使用PHP导出xls后,当我打开excel文件它显示消息为'不同的格式'

我使用PHP来导出Excel(.xls)文件。 在导出特定文件之后,

当我打开文件意味着它说“

**您正在尝试打开的文件,

'file.xls'的格式与文件扩展名指定的格式不同。

validation该文件是否已损坏,并且来自可信来源

打开文件之前**

”。

这是我的代码。

$data = array( array("firstname" => "Mary", "lastname" => "Johnson", "age" => 25), array("firstname" => "Amanda", "lastname" => "Miller", "age" => 18), ); function cleanData(&$str) { $str = preg_replace("/\t/", "\\t", $str); $str = preg_replace("/\r?\n/", "\\n", $str); if(strstr($str, '"')) $str = '"' . str_replace('"', '""', $str) . '"'; } // filename for download $filename = $formname."_".$form_id."_". date('Ymd') . ".xls"; header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel"); $flag = false; foreach($data as $row) { if(!$flag) { // display field/column names as first row //echo implode("\t", array_keys($row)) . "\r\n"; $flag = true; } array_walk($row, 'cleanData'); echo implode("\t", array_values($row)) . "\r\n"; } exit; 

您不是在创buildXLS文件,而是在创build制表符分隔的文本文件。 这就是为什么Excel抱怨文件结尾不符合文件内容。

要创build真正的XLS文件,您需要一个能够编写这些types的文件的库(那里有可以编写旧的Excel XLS格式,Excel XML(2003)格式和新的Excel XLSX格式的库)。

你正在创buildExcel 2007文件?

如果是这样,请尝试使用mimetype application / vnd.openxmlformats-officedocument.spreadsheetml.sheet和文件扩展名.xslx