Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php下载Excel文件_Php_Laravel_Download_Phpexcel - Fatal编程技术网

用php下载Excel文件

用php下载Excel文件,php,laravel,download,phpexcel,Php,Laravel,Download,Phpexcel,我正在尝试将excel文件下载到我首先保存在服务器上的客户端(用于备份)。问题是我得到的文件服务器端与客户端完全不同。服务器端是正确的,客户端列出了我的sql查询及其所需的时间。请注意,xlsx是一个工作簿中的多张工作表,必须如此 public static function generate() { //Override the max execution time because our report takes longer than 30 seconds to r

我正在尝试将excel文件下载到我首先保存在服务器上的客户端(用于备份)。问题是我得到的文件服务器端与客户端完全不同。服务器端是正确的,客户端列出了我的sql查询及其所需的时间。请注意,xlsx是一个工作簿中的多张工作表,必须如此

public static function generate()
    {
        //Override the max execution time because our report takes longer than 30 seconds to run
        ini_set("max_execution_time", 300);

        $objPHPExcel = new PHPExcel();

        $objPHPExcel = ErsReport::generateDemographics($objPHPExcel);
        $objPHPExcel = ErsReport::generateWorkLocationTab($objPHPExcel);
        $objPHPExcel = ErsReport::generateDisabilityCategoryTab($objPHPExcel);

        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
        $objWriter->save('ERS Reports\SpeedERS_'.date("Y_m_d").'.xlsx');
        //$objWriter->save('SpeedERS.xlsx');
    }

    public static function download()
    {
        header ('Content-Type: application/vnd.ms-excel; charset=utf-8');
        header ('Content-Disposition: attachment; filename="ERS Reports\SpeedERS_'.date("Y_m_d").'.xlsx"'); 
        header("Expires: 0");
        header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
        header("Cache-Control: private",false);
        readfile('ERS Reports\SpeedERS_'.date("Y_m_d").'.xlsx');
    }
我打电话生成然后下载。“生成”对话框显示正确的数据。

当我调用下载时,它显示不正确的数据,并且只有一页

编辑

调用generate&download的函数

    function submitERSReport (formLocation) {
        {{ErsReport::generate();}}
        {{ErsReport::download();}}
    }

我这样称呼它

function submitERSReport () {
    $.ajax({
        url: "/report/generateERS",
        type: "POST",
        dataType: "json",
        error: function(XMLHttpRequest, textStatus, errorThrown){
            alert("Request failed: getting ERS: " + textStatus + " " + errorThrown);
        },
        success: function(msg){
                var iframe = document.createElement("iframe");
                iframe.style.display = "none";
                iframe.src = msg.filename;
                $('body').append(iframe);
        }
    });
}
用这个控制器

public function action_generateERS()
{
    $filename = ErsReport::generate();
    return json_encode(array("filename"=>$filename));
}
我对模型做了一个改变

    $objWriter->save($_SERVER['DOCUMENT_ROOT'].'/ERS/SpeedERS_'.date("Y_m_d").'.xlsx');
    return('/ERS/SpeedERS_'.date("Y_m_d").'.xlsx');

它现在可以工作了,但我仍然愿意接受建议。

你没有看到它不是你下载的文件,而是你脚本的输出吗?告诉我们你如何调用
$obj->download()
。我知道,但我想知道如何解决这个问题。