【问题标题】:PHPExcel excel2007 php output with chartsPHPExcel excel2007 php 输出带图表
【发布时间】: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 显示错误,提示您的数据有问题......并且图表丢失。谢谢。

标签: php phpexcel


【解决方案1】:

我想出了一个简单的解决方案,第一步是存储创建的.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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多