我们的应用程序通过 ajax 将 post 参数发送到服务器,以生成数据,将其格式化为 excel,然后触发下载创建的 excel。
我们之前使用 phpexcel 进行过此操作,将 excel 保存在 tmp 文件中,然后触发重定向到 excel 文件的路由。我们正在将我们的应用程序迁移到 laravel,但我们仍然以相同的方式执行此操作,使用 mmatwebsite laravel excel 提供程序,将 tmp 文件保存在 laravel 公共目录中,然后重定向到该位置。我们想直接下载它而不将其保存在 tmp 中,但每次到达的只是网络窗口中的一些乱码输出。
这怎么能做到,这甚至可能吗,我们注定要永远使用 tmp 文件下载吗?当前简单的excel函数:`public function ExportCible(Request $request) {
$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");
}`
并在带有窗口位置的ajax端调用以触发下载。
exportData:function(url,data){
return $.ajax(url,{
data: data,
method: "POST",
success: function(fileLink){
window.location = Config.exportRoute + fileLink
},
});
},
我在这里想念什么。尝试了其他 laravel excel 方法,例如 ->export() 和 ->download()。以前在phpexcel中尝试过类似的方法。从来没有运气