如何使用Laravel Maatwebsite仅导入第2行的表头数据
解决方案
Laravel Maatwebsite 提供的默认HeadingRowImport默认读取第1行作为表头,要修改为读取第2行,可参考以下两种实现方式:
方案1:自定义导入类(推荐,兼容性最好)
- 第一步:创建自定义导入类
app/Imports/SecondRowHeadingImport.php,代码如下:
<?php namespace App\Imports; use Maatwebsite\Excel\Concerns\WithHeadingRow; use Maatwebsite\Excel\Imports\HeadingRowImport as BaseHeadingRowImport; class SecondRowHeadingImport extends BaseHeadingRowImport implements WithHeadingRow { /** * 指定表头所在行号,行号从1开始计数 */ public function headingRow(): int { return 2; } }
- 第二步:修改控制器中原有代码,替换为自定义的导入类即可:
HeadingRowFormatter::default('none'); // 调用自定义的导入类读取表头 $headings = (new \App\Imports\SecondRowHeadingImport)->toArray($request['student_upload_file']);
方案2:直接读取行数组取值(无需额外创建类,适合临时使用)
直接读取文件所有行,按数组索引取第二行(数组从0开始计数,第二行对应索引1):
$allRows = \Maatwebsite\Excel\Facades\Excel::toArray([], $request['student_upload_file']); // 此处$allRows[0]对应第一个工作表,如有多工作表需求可修改对应索引 $headings = $allRows[0][1] ?? [];
内容的提问来源于stack exchange,提问作者Alan Jose
相关产品推荐
相关产品推荐

