我使用最新的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
不兼容。它说文件已损坏,数据被替换或删除。我错过了什么?非常感谢。
答案 0 :(得分:0)
我找到了一个简单的解决方案,第一步是存储创建的.xlsx
文件,第二步是使用header("Location:")
下载文件。使用array_map
功能删除冗余文件。
array_map('unlink', glob( __DIR__."/*.xlsx"));
$file = 'test.xlsx';
$objPHPWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objPHPWriter->setIncludeCharts(TRUE);
$objPHPWriter->save($file);
header("Location: $file");