1

I am generating excel file in PHP using PHPSpreadsheet library. When I directly call the url 'http://10.150.18.22/ppc/dicreport.php?report_date=2022-10-07&report_type=Daily_Report' excel file gets generated successfully. But when same url is called through AJAX call, following output is generated on browser console. enter image description here

Ajax Call:

<script>    
  $("#generateReportForm").on("submit", function (e) {
    e.preventDefault();
    var report_date=$('#report_date').val();
    var report_type=$('#report_type').val();
    console.log(report_date);
    console.log(report_type);
    $.ajax({
      url: "dicreport.php?report_date="+report_date+"&report_type="+report_type,
      type: "GET",
      data: $("#generateReportForm").serialize(),
      success: function (response) { 
           console.log(response);          
      },
    });
  });
</script>

dicreport.php

<?php
  $REPORT_DATE=$_GET['report_date'];
  $REPORT_TYPE=$_GET['report_type'];
  
  require 'vendor/autoload.php';

  use PhpOffice\PhpSpreadsheet\Spreadsheet;
  use PhpOffice\PhpSpreadsheet\IOFactory;

  $spreadsheet = new Spreadsheet();
  $sheet = $spreadsheet->getActiveSheet();


  $spreadsheet->getDefaultStyle()
            ->getFont()
            ->setName('Arial')
            ->setSize(10);
            

  $file=$REPORT_TYPE."_".$REPORT_DATE.".xlsx";

  header('Content-disposition: attachment; filename='.$file);
  header('Content-type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

  $writer = IOFactory::createWriter($spreadsheet,'Xlsx');
  $writer->save('php://output');
?>

1 Answers1

0

Try this.

  1. check your AJAX code and output $REPORT_DATE=$_GET['report_date']; $REPORT_TYPE=$_GET['report_type'];

to ensure they are both displaying their value as expected. do this by printing its value via your PHP script.

  1. Make sure you are not outputting any value in the spreadsheet code such as echo .... or print ...