最初にサーバーに保存した Excel ファイルをクライアントにダウンロードしようとしています (バックアップ目的で)。問題は、クライアント側とはまったく異なるファイル サーバー側を取得することです。サーバー側は正しく、クライアント側は SQL クエリと所要時間を一覧表示します。xlsx は 1 つのワークブック内の複数のシートであり、そのようにする必要があることに注意してください。
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 を呼び出してからダウンロードします。生成すると、正しいデータが表示されます。
ダウンロードを呼び出すと、不適切なデータと 1 ページしか表示されません。
編集
生成とダウンロードを呼び出す関数。
function submitERSReport (formLocation) {
{{ErsReport::generate();}}
{{ErsReport::download();}}
}