Eliminar la hoja de matriz principal para importar en una colección o matriz en el paquete de Excel de Laravel.
Quiero importar un archivo Excel, pero solo en la hoja index[0], pero cuando uso el método toCollection o toArray, las filas están envueltas en un array de índice de hoja:
¿Cómo puedo eliminar el array de índice de hoja envuelto en otro array?
Aquí está mi código:
Import.php
<?php
namespace App\Imports;
use Maatwebsite\Excel\Concerns\Importable;
use Maatwebsite\Excel\Concerns\SkipsEmptyRows;
use Maatwebsite\Excel\Concerns\WithCalculatedFormulas;
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class Import implements SkipsEmptyRows,
WithCalculatedFormulas,
WithMultipleSheets
{
use Importable;
/**
* Select sheet by index and how they are
* mapped to specific import object.
*
* @return array
*/
public function sheets(): array
{
return [
0 => new static(),
];
}
}
Controlador:
$filePath = 'import-excel.xlsx';
$import = new Import();
$rows = $import->toCollection($filePath);
dd($rows->toArray());
Resultado esperado:
[0] => Array(
[0] => *Nombre del contacto
[1] => *Correo electrónico del contacto
[2] => *Dirección del contacto
)
[1] => Array (
[0] => Talia Oktaviani S.Psi
[1] => nova03@yahoo.com
[2] => Ds. Abdul No. 618 Tarakan 11408 KalU
)
Resultado real:
Array( <== <strong><em>Quiero eliminar esto.</em></strong>
[0] => Array( <== <strong><em>Quiero eliminar esto</em></strong>
[0] => Array(
[0] => *Nombre del contacto
[1] => *Correo electrónico del contacto
[2] => *Dirección del contacto
)
[1] => Array (
[0] => Talia Oktaviani S.Psi
[1] => nova03@yahoo.com
[2] => Ds. Abdul No. 618 Tarakan 11408 KalU
)
) <== <em><strong>Quiero eliminar esto.</strong></em>
) <== <strong><em>Quiero eliminar esto.</em></strong>
davy.ai
Para eliminar el array padre envuelto, puedes acceder al primer elemento del array devuelto y devolverlo en lugar de todo el array. Aquí está el código actualizado para el método
toCollection
:Esto solo devolverá la primera hoja en el índice 0 sin el array padre envuelto.