php://output - 只输出页面的一部分而不是整个页面

php://output - Only output part of page and not whole page

我正在使用 Phpspreadsheet 生成 Excel 个文件。

我想直接输出文件作为下载。所以我使用了以下代码:

$writer = IOFactory::createWriter($spreadsheet, "Xlsx"); //Xls is also possible
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="VIEW-tilbud.xls"');
header('Cache-Control: max-age=0');
$writer->save("php://output");

但是这包括页面的所有内容,所以我的 Excel 文件被奇怪的字符损坏了。 我无法摆脱 CMS 系统生成的页面上的额外内容,因此我无法仅拥有导出 Excel 文件所需的代码。

如何让代码只导出页面的特定部分?

您可以清除输出缓冲区以停止任何已经 echod。然后 exit 交付内容后的脚本。

//protect against infinite looping, in case of an error with ob_end_clean()
$successfulClean = TRUE;
//empty the output buffer
while (ob_get_level()!==0
       &&$successfulClean===TRUE){
    $successfulClean = ob_end_clean();
}

// your code
$writer = IOFactory::createWriter($spreadsheet, "Xlsx"); //Xls is also possible
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="VIEW-tilbud.xls"');
header('Cache-Control: max-age=0');
$writer->save("php://output");
//------

//end the request, to stop your CMS from mucking things up. Content Mucking System lol
exit;

相关文档: