PHP Excel文件格式与扩展名不匹配

时间:2015-04-08 13:41:31

标签: php windows phpexcel

我在使用PHPExcel脚本导出的XLS文件上遇到上述错误(仅限Windows)。我在这个错误中看到的大多数引用都涉及在输出到php://outputPHPExcel generated excel file not working. (File format or extension is invalid )时尾随/前导空格/换行符。但是我没有以这种方式输出。而是我正在输出XLS将文件传送到我服务器上的文件路径,然后将URL传回浏览器进行下载。我已经检查了我的PHP脚本及其在开头或结尾为空格和换行创建的文件,但没有。这是部分我的代码生成PHP代码。

$xls = new PHPExcel();
$xls->getActiveSheet()->setTitle(substr($reportName, 0, 31));
$xls->setActiveSheetIndex(0);
//iterate over the headers
foreach($headers as $i => $header){
    $xls->getActiveSheet()->SetCellValue(getExcelColumn($i+1) . '1', $header);
}
//iterate over the table contents
foreach($tableContents as $rowNum => $row) {
    foreach($row as $col => $cell) {
        if(strpos($cell, "none specified") > -1)
            $cell = "N/A";
        $cell = explode("<br />", $cell);
        $cell = implode(", ", $cell);
        $xls->getActiveSheet()->SetCellValue(getExcelColumn($col+1) . ($rowNum+2), $cell);
    }
}
$fileName = createRandomKey(20) . '-' . $reportName . '.xls';
$w = new PHPExcel_Writer_Excel2007($xls);
$w->save("savedExports/$fileName");

$headers$tableContents取自$_POST数据,此代码中调用了一些辅助函数。

1 个答案:

答案 0 :(得分:1)

你应该这样做:

$fileName = createRandomKey(20) . '-' . $reportName . '.xlsx';

*.xlsx是Excel 2007文件的正确扩展名

此外:

strpos可以返回false,您应该

strpos($cell, "none specified") !== false