【发布时间】:2017-02-15 11:45:28
【问题描述】:
我使用最新的PHPExcel 库来创建.xls、.xlsx 文件。当我尝试像这样输出创建的文件时:
ob_end_clean();
$file = 'test.xls';
header('Content-Type: application/vnd.ms-excel; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save('php://output');
exit;
一切都很好,直到我尝试创建和输出任何charts。所以我根据示例更改了我的代码:
ob_end_clean();
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save(str_replace('.php', '.xlsx', __FILE__));
exit;
这是有效的,但文件没有下载。所以我修改了代码以输出创建的文件:
ob_end_clean();
$file = 'test.xlsx';
header('Content-Type: Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet; charset=UTF-8');
header('Content-Disposition: attachment; filename="'.$file.'"');
header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1');
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save('php://output');
exit;
这不起作用,以 ERR_INVALID_RESPONSE 结束。
此外,当我使用带有第二个代码块的图表存储 excel 文件时,它与 MS Excel 2016 不兼容。它说文件已损坏并且数据已被替换或删除。我错过了什么?非常感谢。
【问题讨论】:
-
And this is not working.究竟是什么意思?它显示错误信息?它会创建一个损坏的文件?它让服务员吃掉你的宠物仓鼠? -
Excel5 Writer 不支持图表,所以您的第一个示例根本不包含任何图表
-
如果您在第二个示例中手动下载广告并使用 MS Excel 打开文件,会发生什么情况?
-
@MarkBaker 错误是 ERR_INVALID_RESPONSE。在我写的第二个例子中,它运行良好。当我下载文件时,在 OpenOffice、Excel 2007、2010 中一切正常,但 Excel 2016 显示错误,提示您的数据有问题......并且图表丢失。谢谢。