我正在尝试将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然后下载。生成显示正确的数据。
当我呼叫下载时,它会显示不正确的数据,只显示一页。
修改
调用生成&下载。
function submitERSReport (formLocation) {
{{ErsReport::generate();}}
{{ErsReport::download();}}
}
答案 0 :(得分:0)
我这样称呼它。
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');
它现在有效,但我仍然愿意接受建议。