我正在使用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
是直接从文档中复制的。
答案 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');
}