PHP Excel 文件格式与扩展名不匹配
PHP Excel file format doesn't match extension
我在使用 PHPExcel 脚本导出的 XLS 文件中遇到上述错误(仅限 Windows)。当输出到 php://output
(PHPExcel generated excel file not working. (File format or extension is invalid ))时,我看到的关于此错误的大部分参考都涉及 trailing/leading spaces/newlines。但是我没有以那种方式输出。相反,我m 将 XLS 文件输出到我服务器上的文件路径,然后将 URL 传回浏览器进行下载。我检查了我的 PHP 脚本和它为空格和换行符创建的文件开头或结尾还有 none。这是我生成 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
数据,这段代码中调用了一些辅助函数。
你应该这样做:
$fileName = createRandomKey(20) . '-' . $reportName . '.xlsx';
*.xlsx
是 Excel 2007 文件的正确扩展名
还有:
strpos
可以returnfalse
,你应该
strpos($cell, "none specified") !== false
我在使用 PHPExcel 脚本导出的 XLS 文件中遇到上述错误(仅限 Windows)。当输出到 php://output
(PHPExcel generated excel file not working. (File format or extension is invalid ))时,我看到的关于此错误的大部分参考都涉及 trailing/leading spaces/newlines。但是我没有以那种方式输出。相反,我m 将 XLS 文件输出到我服务器上的文件路径,然后将 URL 传回浏览器进行下载。我检查了我的 PHP 脚本和它为空格和换行符创建的文件开头或结尾还有 none。这是我生成 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
数据,这段代码中调用了一些辅助函数。
你应该这样做:
$fileName = createRandomKey(20) . '-' . $reportName . '.xlsx';
*.xlsx
是 Excel 2007 文件的正确扩展名
还有:
strpos
可以returnfalse
,你应该
strpos($cell, "none specified") !== false