CodeIgniter使用PHPExcel库导出Excel文件下载后内容异常问题求助
代码核心错误及修复方案
- 核心错误:导出使用了错误的PHPExcel实例
你所有的表头、数据都写入了自行实例化的$object对象,但最后生成Excel文件时调用的是框架加载的空$this->excel对象,导致文件没有写入有效内容,打开后显示乱码。
修复方法:将导出代码行
$objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');
替换为
$objWriter = PHPExcel_IOFactory::createWriter($object, 'Excel5');
- 次要问题:输出缓存处理不严谨
如果框架执行过程中存在多余输出(比如空白字符、报错信息),也会污染Excel文件结构,建议调整输出部分代码:
// 清空所有之前的输出,避免多余内容污染文件 ob_end_clean(); ob_start(); $objWriter->save('php://output'); // 输出完成后直接终止程序,防止后续逻辑输出多余内容 exit;
- 可选优化:补充header头提升浏览器兼容性
可以在原有header后补充以下配置,避免部分浏览器下载或打开异常:
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Pragma: public');
内容的提问来源于stack exchange,提问作者qas da
相关产品推荐
相关产品推荐

