我有一个在表格中显示数据的网页,我想要添加的是一个按钮,用户可以单击该按钮将表格下载为Excel文件。我使用PHPExcel来制作Excel文件,在我真正开始下载文件之前,它似乎没有任何错误-似乎浏览器生成文件很好,但实际上并没有下载完成的文件。
我确实看过这个问题:phpexcel to download,但我尝试了答案说要做的事情,似乎没有改变任何事情。
这是我的前端代码("table.php"):
<script>
$("#export-to-excel").click(function() {
$.ajax({
type: "GET",
url: "table_create_excel.php",
data: {
action: "exportToExcel",
tableRows: rows
}
});
}
</script>
<img src='excel-icon.png' id="export-to-excel"/>下面是我的后端代码("table_create_excel.php"):
require_once "PHPExcel.php";
$objPHPExcel = new PHPExcel();
// ...
// ... generate the excel document from the given data ...
// ...
$objPHPExcel->setActiveSheetIndex(0);
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="Table_Summary.xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');我是不是遗漏了什么,如果我把它放进去,我的浏览器就会下载这个文件?问题是不是因为我正在进行AJAX调用,而不是直接链接到PHP页面?谢谢。
发布于 2021-05-13 11:59:25
事实证明,我的怀疑是正确的,您不能使用AJAX下载文件。我所做的是去掉了JQuery的“单击”事件,并将其替换为“导出到Excel”图标周围的锚定标记,它有一个指向生成和下载Excel文件的PHP文件的链接,以及足够的参数,以允许PHP代码重新查询数据库并重建我想要导出的表,而不是将该表包含在发送的数据中。
https://stackoverflow.com/questions/67494612
复制相似问题