如何使PHPExcel下载通过<a>元素工作?



我编写了一些代码来生成excel(.xlsx)文件,以便用户在我的网站上下载。我正在使用Symfony2,尽管我不认为这是我遇到这个问题的原因。这是我的代码的片段:

$filename = "cmm_payment_report.xlsx";
header('Content-Type: application/vnd.ms-excel');
header(sprintf('Content-Disposition: attachment; filename="%s"', $filename));
header("Cache-Control: max-age=0");
$objWriter = PHPExcel_IOFactory::createWriter($excel, 'Excel2007');
$objWriter->save("php://output");

如果我打开一个新页面并将此下载的链接粘贴到浏览器中,则可以正常工作,并且可以下载该文件。但是,如果我将链接放入类似的树枝模板中:

<a href="{{ path('report_payment_excel', {payPeriod: app.request.get('pay-period')}) }}" target="_blank">
    <button>Download as XLS</button>
</a>

它不起作用。我单击链接,浏览器表示它正在加载,但是停止加载后什么都不会发生。如果我右键单击>在新选项卡中打开链接,则可以使用。添加target="_blank"无法解决问题。

问题是我的 <button>Download as XLS</button>元素包含在 <form>元素的内部,因此它无意中提交了表单而不是遵循链接。

最新更新