es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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>
Tags:  , , , ,

Answer

  1. Avatar for 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:

    $rows = $import->toCollection($filePath)[0];
    
    dd($rows->toArray());
    

    Esto solo devolverá la primera hoja en el índice 0 sin el array padre envuelto.

Comments are closed.