我正在使用Laravel Excel库,我一直在阅读文档,但它没有说明从某个行号读取 excel,也就是说,我有 excel 的前 6 行信息和“标题”每列直到第7行,我如何向函数指示“索引”存在?
public function excel($id){
$bankFiles = FicheroBanco::find($id);
$url = $bankFiles->url;
Excel::selectSheetsByIndex(0)->load($url, function ($sheet){
//$sheet->noHeading();
$sheet->each(function ($row){
$mov = new Transaccion();
$mov->cuenta = $row->cuenta;
$mov->divisa = $row->divisa;
$mov->titular = $row->titular;
$mov->fecha = $row->fecha;
$mov->concepto = $row->concepto;
$mov->valor = $row->valor;
$mov->importe = $row->importe;
$mov->saldo = $row->saldo;
$mov->observaciones = $row->observaciones;
$mov->extra = $row->extra;
$mov->save();
});
});
return view('bank.excel');
}
我已经看到我可以使用->take(); 获取文档的前 x 行或->skip(); 跳过前 x 行。问题是 excel 文件的第一行是 7 列的合并单元格,我不能使用第 6 行的标题,因为它挂载了非结构化数组。
编辑:默认情况下,它可以在excel.php配置文件中的字段'startRow' => 1中进行配置,但问题是我也无法从该行之前的字段中获取任何类型的信息。问题是我需要前 6 行的某些字段的信息,但我需要指出标题从第 6 行开始。有什么想法吗?
我在文档中读到了参数->byConfig(); 但仅在不使用标题的情况下表示。
有人可以告诉我该怎么做吗?
对于每个后续数据行,我需要将“标题”之前的字段插入数据库。
编辑:我一直在做测试,虽然我做了两个不同的功能,一个不使用标题,另一个如果更改了配置的startRow参数,一个和另一个都从同一行加载我。我不知道如何告诉一个从一行加载,另一个从头开始加载。它可以?
如果我输入 'startRow' => 6,上面的代码对我来说非常有效,而不是如果我使用noheadings(使用 startrow 6)我无法访问 excel 文件的前几行。
我不能修改excel的结构,因为我必须坚持它。
最后,解决方案是保持excel.php配置不变,即'startRow' => 1以便能够从头开始访问所有元组,我做了以下工作:
这样我就能得到我想要的。问题是我不知道如何遍历$sheet但后来在文档中我看到有->toArray()和->toObject()并且它返回对象,因为它没有奇怪的位置和一生中的每一个人或任何需要的东西。
我希望它对某人有用。