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

时间:2018-10-30 06:22:32

标签: laravel laravel-5 laravel-excel

我正在使用https://laravel-excel.maatwebsite.nl/中的Laravel Excel 3.1,我试图弄清楚是否有一种简单的方法可以将集合简单地呈现为excel文件。

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

我在PatientsController.php中拥有

public function excelExport(Request $request)
{
    $params = $this->getQueryParams($request);
    $pts = $this->createIndexCollection($request, $params);

    return Excel::download(new PatientsExport, 'patients.xlsx');
}

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

PatientsExport是直接从文档中复制的。

2 个答案:

答案 0 :(得分:-1)

您必须制作一个类来导出集合以实现此目的,并在app / Export Patientexport.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');
}

答案 1 :(得分:-2)

请参阅官方文档中的以下示例:

https://laravel-excel.maatwebsite.nl/3.1/exports/collection.html

class PatientsExport implements FromCollection
{
    private $your_collection;

    public function __construct($pts) {
        $this->your_collection = $pts;
    }

    public function collection()
    {
        return $this->your_collection;
    }

}

然后尝试:

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