目前使用Laravel (Maatwebsite)软件包上传excel并读取它们。问题是,如何在同一个excel文件中读取水平和垂直数据?
我的excel文件是这样的-
到目前为止,这是我的密码,但没有读到任何东西
$rows = Excel::load('storage\\app\\public\\upload\\Funiture.xlsx)->get(); @foreach ($rows as $key => $value) <td>{{ $value->{'Furniture Registration Number'} }}</td> <td>{{ $value->{'Number'} }}</td> <td>{{ $value->{'Chair Name'} }}</td> <td>{{ $value->{'Table Name'} }}</td> <td>{{ $value->{'Carpet Color'} }}</td> @endforeach
编辑
$rows = Excel::load('storage\\app\\public\\upload\\Funiture.xlsx)->get(); <span>Furniture Registration Number : <b>{{ $rows[0][1] }}</b></span> $rows = Excel::load('storage\\app\\public\\upload\\Funiture.xlsx, function($reader){$reader->noHeading(); $reader->skipRows(3); })->get();; @foreach ($rows as $key => $value) <td>{{ $value->[0] }}</td> <td>{{ $value->[1] }}</td> <td>{{ $value->[2] }}</td> <td>{{ $value->[3] }}</td> @endforeach
这是正确的吗?
这是dd(行)的结果。如何检索数组的数量?在这种情况下,它有7,如图所示。
上云精选
2核2G云服务器 每月9.33元起,还有更多云产品低至0.02元
正如Laravel文档所述:
默认情况下,excel文件的第一行将用作属性。
因此,如果要使用属性,则需要为第一行定义正确的标题。否则你可以做一件事
尝尝这个
$rows= Excel::load("storage\\app\\public\\upload\\Funiture.xlsx", function($reader) { $reader->noHeading(); $reader->skipRows(3); // skip first three rows as they contain headings })->get(); $rows = $rows->toArray();
然后,在您的视图中,您可以循环如下所示的行
@foreach ($rows as $key => $value) <td>{{ $value[0] }}</td> <td>{{ $value[1] }}</td> <td>{{ $value[2] }}</td> <td>{{ $value[3] }}</td> @endforeach
编辑:
您不需要两次读取文件,只需读取文件而不跳过3行,然后使用 切片 在索引 [0][1] 读取值后跳过前3行。
[0][1]
$rows= Excel::load("storage\\app\\public\\upload\\Funiture.xlsx", function($reader) { $reader->noHeading(); })->get(); $rows = $rows->toArray();
在你看来
<span>Furniture Registration Number : <b>{{ $rows[0][1] }}</b></span> $rows = array_slice($rows,4); @endphp @foreach ($rows as $key => $value)