Ajax将数据发布到Excel工作表

时间:2019-03-29 14:06:15

标签: php jquery ajax excel

所以我尝试将数据放入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工作表中。我究竟做错了什么?请帮忙。

1 个答案:

答案 0 :(得分:0)

这里有两个问题。第一个是您的click()回调中没有任何e.preventDefault(),这将使您的表单在没有JS的情况下“正常”提交(这就是为什么出现下载提示的原因)。第二个问题是,如果要下载响应,则不能使用Ajax。将您好放入表单中的隐藏输入中,然后删除您的JS,它将起作用。 – Magnus Eriksson

这一切都归功于Magnus Eriksson。