我使用php导出excel(.xls)文件。导出特定文件后,
当我打开文件意味着它说“
**您要打开的文件,
'file.xls',格式与文件扩展名指定的格式不同。
验证文件是否已损坏且来自受信任的来源
打开文件前**
”。
这是我的代码。
$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;
答案 0 :(得分:1)
您是否正在创建Excel 2007文件?
若是,请尝试使用mimetype application / vnd.openxmlformats-officedocument.spreadsheetml.sheet和文件扩展名.xslx
答案 1 :(得分:1)
您没有创建XLS文件,而是创建制表符分隔的文本文件。这就是为什么Excel抱怨文件结尾与文件内容不对应的原因。
要创建真正的XLS文件,您需要一个能够编写这些文件的库(有些库可以编写旧的Excel XLS格式,Excel XML(2003)格式和新的Excel XLSX格式)。