我們的應用程序通過ajax發送post參數到服務器,以便生成數據,格式化爲excel,然後觸發下載創建的excel。如何通過ajax直接觸發excel下載laravel excel
我們以前用phpexcel做過,將excel保存在tmp文件中,然後觸發重定向到excel文件的路徑。我們正在將應用程序遷移到laravel,但我們仍然以相同的方式使用mmatwebsite laravel excel提供程序,在laravel公共目錄中保存一個tmp文件,並將其重定向到該位置。我們要直接下載該文件而不保存在tmp中,但是每一個到達的東西都是網絡窗口中的一些亂碼輸出。
這是怎麼做到的,這甚至是可能的,我們是否註定要使用tmp文件下載forver?目前簡單的Excel功能:`公共職能ExportCible(請求$要求){
$cible = Cible::filter($request->all())->get();
$columns = explode(",", $request->columns);
$titles = explode(",", $request->titles);
ob_end_clean();
ob_start();
$filename = "ciblage_d".date("Ymd",time())."_h".date("His",time());
Excel::create($filename, function($excel) use($cible,$columns, $titles){
$excel->sheet('Excel sheet', function($sheet)use($cible,$columns, $titles) {
$sheet->setOrientation('landscape');
$sheet->loadView('excelTemplates.cible')->with('cible', $cible)->with('columns', $columns)->with('titles', $titles);
});
})->store('xlsx', public_path('exports'));
return($filename.".xlsx");
}`
而且在阿賈克斯與窗口位置的呼叫,觸發下載。
exportData:function(url,data){
return $.ajax(url,{
data: data,
method: "POST",
success: function(fileLink){
window.location = Config.exportRoute + fileLink
},
});
},
缺少什麼我在這裏。嘗試了其他的laravel excel方法,例如 - > export()和 - > download()。先前在phpexcel中嘗試過類似的方法。從來沒有任何運氣
看看這個https://mattstauffer.co/blog/export-an-eloquent-collection-to-a-csv-with-league-csv – Michel