所以我尝试将数据放入Excel工作表中,我是这样做的,
首先是通过ajax帖子发送数据:
<!doctype html>
<html lang="en">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<script>
$(document).ready(function(){
$("#form").on('submit', function() {
$(function() {
var hello = "hello world";
$.ajax ({
type: 'POST',
url: 'example.php',
data: {hello: hello},
success: function(result) {
console.log('success');
}
});
});
});
});
</script>
<body>
<form id="form" action="example.php" method="post">
<input type="submit" value="submit">
</form>
</body>
</html>
然后将其放入Excel工作表:
<?php
include "../includes/PHPExcel.php";
$title = "Verrijking ";
$hello = $_POST['hello'];
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("RM Netherlands B.V.")
->setLastModifiedBy("RM Netherlands B.V.")
->setTitle($title)
->setSubject($title)
->setDescription($title)
->setKeywords($title)
->setCategory($title);
$pcbestand = date('Ymdhis') . ".xlsx";
$objPHPExcel->getActiveSheet()
->setCellValue("A"."1", $hello);
$objPHPExcel->getActiveSheet()->getColumnDimension("A")->setAutoSize(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save($pcbestand);
$file = $pcbestand;
header('Content-disposition: attachment; filename='.$file);
header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Length: ' . filesize($file));
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
ob_clean();
flush();
readfile($file);
$DelFilePath = $setup['/var/www/clients/client1/web1/web/nordin/'.$pcbestand.''] . $pcbestand;
if (file_exists($DelFilePath)) { unlink ($DelFilePath); }
?>
最后一部分创建了一个“另存为文件”对话框,并确保未将其上传到服务器。
但这是问题,即使ajax发布成功,我也无法将ajax发布($ _POST ['hello'])放入我的Excel工作表中。我究竟做错了什么?请帮忙。
答案 0 :(得分:0)
这里有两个问题。第一个是您的click()回调中没有任何e.preventDefault(),这将使您的表单在没有JS的情况下“正常”提交(这就是为什么出现下载提示的原因)。第二个问题是,如果要下载响应,则不能使用Ajax。将您好放入表单中的隐藏输入中,然后删除您的JS,它将起作用。 – Magnus Eriksson
这一切都归功于Magnus Eriksson。