如何在laravel中将集合作为excel文件发送

如何在laravel中将集合作为excel文件发送,laravel,laravel-5,laravel-excel,Laravel,Laravel 5,Laravel Excel,我使用的是来自的LaravelExcel3.1,我试图找出是否有一种简单的方法可以将集合呈现为Excel文件 在我的控制器中,我有生成db查询并将其放入视图的代码。我想让用户能够将该视图中的数据下载为excel文档。用于创建视图的代码并不简单,它基于许多查询输入 在我的PatientsController.php中,我有 我想将已经计算的集合$pts传递给download命令。这可能吗 PatientExport直接从文档中复制。请参见官方文档中的示例: 然后尝试: public functio

我使用的是来自的LaravelExcel3.1,我试图找出是否有一种简单的方法可以将集合呈现为Excel文件

在我的控制器中,我有生成db查询并将其放入视图的代码。我想让用户能够将该视图中的数据下载为excel文档。用于创建视图的代码并不简单,它基于许多查询输入

在我的PatientsController.php中,我有

我想将已经计算的集合$pts传递给download命令。这可能吗


PatientExport直接从文档中复制。

请参见官方文档中的示例:

然后尝试:

public function excelExport(Request $request) { 
{
    $params = $this->getQueryParams($request);
    $pts = $this->createIndexCollection($request, $params);
    return Excel::download(new PatientExport($pts), 'invoices.xlsx');
}

您必须创建一个类来导出集合,从而在app/export patientsexport.php中创建一个文件并添加此内容

namespace App\Export;

use App\PatientsExport;
use Maatwebsite\Excel\Concerns\FromCollection;

class PatientsExports implements FromCollection
{
    public function collection()
    {
        return PatientsExport::all();
    }
}
现在您可以在控制器中访问

use App\PatientsExport\PatientsExports;
public function excelExport(Request $request)
{
    $params = $this->getQueryParams($request);
    $pts = $this->createIndexCollection($request, $params);
    return Excel::download(new PatientsExports, 'patients.xlsx');
}

你为什么写这张退货发票::全部;?我怎么看,你刚刚从文档中复制了一个例子,你在哪里使用$pts我不确定PatientExports是否雄辩,是否在createIndexCollection命令中设置了所有方法$pts。它返回用于视图的集合。我想使用与可下载excel表相同的集合。为什么有人设置-1解释plsI没有测试它,但是PatientExport类与PatientController不是同一个类,所以使用$this->将不起作用。有没有一种方法可以将预制作的集合或控制器作为依赖项注入发送?什么意思是它不起作用。它会起作用的。我知道那是不同的班级。PatientExport正在实现FromCollection接口。当你把PatientePort实例放到下载方法时,它会自动调用收集方法..哦,你是说getQueryParams方法,是的,我在回答中提到,如果可能的话,你应该将这两个方法移动到那个类中。如果你不想或不能将收集功能移动到PatientePort类中,我已经编辑了答案。。。请看一下能否显示getQueryParams和createIndexCollection内容
namespace App\Export;

use App\PatientsExport;
use Maatwebsite\Excel\Concerns\FromCollection;

class PatientsExports implements FromCollection
{
    public function collection()
    {
        return PatientsExport::all();
    }
}
use App\PatientsExport\PatientsExports;
public function excelExport(Request $request)
{
    $params = $this->getQueryParams($request);
    $pts = $this->createIndexCollection($request, $params);
    return Excel::download(new PatientsExports, 'patients.xlsx');
}