PHPSpreadsheet Excel 报告生成错误

问题描述 投票:0回答:1

我正在使用 PHPSpreadsheet 库在 PHP 中生成 excel 文件。当我直接调用 url 'http://10.150.18.22/ppc/dicreport.php?report_date=2022-10-07&report_type=Daily_Report' 时,excel 文件已成功生成。但是当通过 AJAX 调用调用相同的 url 时, 在浏览器控制台上生成以下输出。

Ajax 调用:

<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');
?>
php excel phpspreadsheet
1个回答
0
投票

试试这个。

  1. 检查您的 AJAX 代码和输出
    $REPORT_DATE=$_GET['report_date']; $REPORT_TYPE=$_GET['report_type'];

确保它们都按预期显示它们的价值。通过您的 PHP 脚本打印它的值来做到这一点。

  1. 确保您没有在电子表格代码中输出任何值,例如 echo .... 或 print ...
© www.soinside.com 2019 - 2024. All rights reserved.