index.php包含
.......
require_once('WABRegistry/helpers/Session_Handler.php');
session_start();
.......
然后我使用PHPEXCEL:
$objPHPExcel->setActiveSheetIndex(0);
// Save Excel 2007 file
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="polls_results_'.time().'.xlsx"');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->setIncludeCharts(TRUE); //First Sheet Chart
$objWriter->save('php://output');
我可以看到以下错误消息
问题:当我尝试打开文件时,它会在mac上给我错误:
Excel cannot open this file
the file format or file extension is not valid. bla bla
如果我评论//require_once('WABRegistry/helpers/Session_Handler.php');
行,则可以正常使用
Session_Handler.php包含很多代码,如果需要,我会粘贴所有
$session = new sessionHandle();
session_set_save_handler(array(&$session,"open"),
array(&$session,"close"),
array(&$session,"read"),
array(&$session,"write"),
array(&$session,"destroy"),
array(&$session,"gc"));
答案 0 :(得分:2)
在文本编辑器中打开Excel文件,查找任何前导或尾随空格字符,或前导BOM表头,或者yoru会话处理程序可能注入输出流的任何明显的明文错误消息
此问题的最常见原因是与输出相关的空格(可能在结束?>
之后)。
使用输出缓冲,然后在调用save()之前立即丢弃缓冲区是一种常见的工作方式;但最好解决问题,而不是简单地用输出缓冲隐藏它。你会注意到没有任何PHPExcel代码有任何结束?>
,以确保库本身不可能导致这个问题