2017-06-02 6 views
1

私たちのアプリケーションは、データを生成してExcelにフォーマットし、作成したExcelのダウンロードをトリガーするためにpostパラメータをサーバーに送信します。ajaxを使用してlaravel excelでExcelを正しく実行するにはどうすればよいですか

以前はphpexcelでこれを行い、tmpファイルにExcelを保存してから、Excelファイルのルートにリダイレクトをトリガーしました。アプリケーションをlaravelに移行していますが、同様に、mmatwebsite laravel excelプロバイダを使用してlaravelパブリックディレクトリにtmpファイルを保存し、その場所にリダイレクトします。これをtmpに保存せずに直接ダウンロードしたいのですが、到着するたびにネットワークウィンドウに何らかの文字化けがあります。

どのようにこれを行うことができ、これも可能ですが、私たちはtmpファイルのダウンロードを使用する予定ですか?現在、簡単な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"); 

}`

そして、ウィンドウの位置とAJAX側の呼び出しは、ダウンロードをトリガします。

exportData:function(url,data){ 
return $.ajax(url,{ 
    data: data, 
    method: "POST", 
    success: function(fileLink){ 
     window.location = Config.exportRoute + fileLink 
    }, 
}); 

}、

は何私はここで行方不明です。 - > export()と - > download()などの他のlaravelメソッドを試してみてください。以前phpexcelで同様のメソッドを試しました。決して運が良けれ

+0

こちらをご覧くださいhttps://mattstauffer.co/blog/export-an-eloquent-collection-to-a-csv-with-league-csv – Michel

答えて

0

uは、AJAXを使用して主張する場合、Excelファイルを返してみOBJあなたのAPIで作成した後、

とAjax method: "GET"を試してみてください。

もう1つの方法は、操作の終了後に一時的なルートとdestoryを設定しているため、サーバーの負荷を軽減するためにcacheやsth elseを設定することができます。

関連する問題