PHPExcel excel2007 php输出图表

时间:2017-02-15 11:45:28

标签: php phpexcel

我使用最新的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不兼容。它说文件已损坏,数据被替换或删除。我错过了什么?非常感谢。

1 个答案:

答案 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");