使用Laravel中的队列将数据导出到Excel

时间:2018-10-15 09:26:27

标签: php laravel queue jobs maatwebsite-excel

您好,我正在尝试使用laravel队列导出excel文件。我已经整合了maatwebsite。

这是我到目前为止所做的

控制器

public function export()
{
    $this->dispatch(new ExportDistributorJob([]));
    Session::flash('success','Data is being exported to excel file.');
    return redirect()->back();
}

工作

<?php

namespace App\Jobs;

use Illuminate\Bus\Queueable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;

use App\Model\Products;
use Excel;

class ExportDistributorJob implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;

    public function __construct(array $request)
    {
        $this->queue = 'default'; 
        $this->data = $request;
    }

    public function handle()
    {   
        $data = array(
                       'Name' => 'John', 
                       'City' => 'Washington'
                    );

        return Excel::create('invoice', function($excel) use ($data) {
        $excel->sheet('mySheet', function($sheet) use ($data)
        {
            $sheet->fromArray($data);
        });
        })->download('xlsx');

    }
} 

?>

当我执行程序时。它将数据存储在作业表中,并在获得

之后尝试执行3次
  

MaxAttemptsExceededException错误。

我无法使用队列将数据导出到excel文件。

 QUEUE_DRIVER=database 

任何帮助将不胜感激。
 谢谢。

1 个答案:

答案 0 :(得分:0)

#include <emscripten.h> EMSCRIPTEN_KEEPALIVE int testInt(){ return 69420; } 类是从软件包名称空间中错误导入的。

Excel

还有use Maatwebsite\Excel\Excel; 方法正在返回HTTP response and terminates the script

在作业的上下文中,这是不会破坏的,因为它会突然结束作业。您应该改为store the spreadsheet

ExportDistributorJob::handle