在Laravel 5.1中使用Maatwebsite Excel生成动态列,可以通过以下步骤实现:
config/app.php
文件,找到providers
数组,在数组中添加以下行:Maatwebsite\Excel\ExcelServiceProvider::class,config/app.php
文件中,找到aliases
数组,在数组中添加以下行:'Excel' => Maatwebsite\Excel\Facades\Excel::class,app/Exports/DynamicColumnsExport.php
文件,根据需求编辑collection
方法,该方法返回一个包含数据的集合。可以根据动态列的需求,将数据集合中的字段进行动态添加。示例代码:
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
class DynamicColumnsExport implements FromCollection, WithHeadings
{
protected $data;
public function __construct($data)
{
$this->data = $data;
}
public function collection()
{
// 根据需求动态添加列
$columns = ['Name', 'Email'];
foreach ($this->data as $item) {
$columns[] = $item->column_name;
}
// 构建数据集合
$collection = collect([$columns]);
// 添加数据行
foreach ($this->data as $item) {
$row = [$item->name, $item->email];
foreach ($this->data as $column) {
$row[] = $item->{$column->column_name};
}
$collection->push($row);
}
return $collection;
}
public function headings(): array
{
// 设置表头
return ['Name', 'Email'];
}
}
public function export()
{
// 获取动态列数据
$dynamicColumns = // 获取动态列数据的逻辑
// 调用导出类生成Excel文件
return Excel::download(new DynamicColumnsExport($dynamicColumns), 'dynamic_columns.xlsx');
}
以上步骤完成后,访问相应的控制器方法即可生成包含动态列的Excel文件。请根据实际需求修改代码中的变量和逻辑。
领取专属 10元无门槛券
手把手带您无忧上云