php - 使用laravel中的队列将数据导出到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
任何帮助,将不胜感激。
谢谢。
解决方案
Excel
从包命名空间中错误地导入了该类。
use Maatwebsite\Excel\Excel;
方法还ExportDistributorJob::handle
返回HTTP 响应并终止脚本
在工作的上下文中,这是无伤大雅的,因为它会突然结束工作。您应该改为存储电子表格。
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);
});
})->store('xlsx', storage_path('excel/exports'));
}
推荐阅读
- python - 如何在最后一行之后将数据写入文件?
- java - printf 无法显示字符串
- python - 将对象传递给对象列表中的对象
- c# - 垫子没有被正确销毁
- apache - 问题 AH01630:客户端被服务器配置拒绝
- td-engine - 为什么TDengine由于Invalid table ID无法插入数据
- angular - 如何在拖放材质角度 CDK 中添加点击事件
- javascript - 如何将时间线图转换为积分图?
- plugins - 使用 geometry_msgs/PointStamped 添加气压传感器时未发布压力主题
- vcf-variant-call-format - VQSR 中的“NEGATIVE_TRAIN_SITE”是什么意思?