【发布时间】:2013-02-25 15:48:14
【问题描述】:
我有一个输出 Excel 文件的小 PHPExcel 脚本,问题是,当我从服务器打开它时,我可以毫无问题地打开它。但是当我通过浏览器中的标题下载它时,它不起作用。
我在互联网上搜索了问题,但没有找到任何对我有帮助的东西,我尝试使用 ob_clean();,我检查了 BOM 是否是问题,没有任何效果。
所以我希望你们中的一些人有一个想法可以让我的脚本工作。
$this->objPHPExcel = $this->objReader->load($this->newFilePath);
$objWorksheet = $this->objPHPExcel->getActiveSheet();
$objWriter = PHPExcel_IOFactory::createWriter($this->objPHPExcel, 'Excel2007');
//Adding IO General Overhead
foreach($this->sums as $sumkey => $sumval){
foreach($sumval as $keys => $vals){
foreach($vals as $key => $val){
$objWorksheet->setCellValueByColumnAndRow($key, $offset[$sumkey][$keys], $val);
}
}
$objWriter->save($this->newFilePath);
}
ob_clean();
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
// It will be called file.xls
header('Content-Disposition: attachment; filename="'.$this->newFilePath.'"');
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
【问题讨论】:
-
一如既往....在文本编辑器中打开文件并检查任何前导/尾随空格(包括 BOM 标记),或数据流中任何明显的纯文本错误消息...。我必须经常重复这个,我真的应该为它设置一个宏
-
但是查看您的代码,您将文件发送到浏览器的哪个位置?您需要保存到 php://output after 发送标头;或发送标头后的 readfile($this->newFilePath)
标签: php phpexcel file-format