Error Laravel Excel Export: El formato o la extensión no son validos

Puede que trabajes con laravel y estas tratando de exportaer un excel con el paquete Laravel Excel pueda salir el siguiente error:

Si intentas abrir el archivo veras un montón de símbolos

Lo que esta ocurriendo es que en algún punto de la creación del Excel se esta enviando un salto de carro en blanco y eso hace que truene el resto de la información.

Hay un truquillo con el que puedes evitar esto, debes colocarlo dentro del controlador que ejecuta la exportación

public function itemExport(){
        /*Si no coloco estas lineas Falla*/
        ob_end_clean();
        ob_start();
        /*Si no coloco estas lineas Falla*/

        return Excel::download(new ItemExport, 'Existencia_Articulos_EPP.xlsx');
    }

Si, la magia esta en estas lineas

ob_end_clean();
ob_start();

Esto hace que primero se cargue toda la info y una vez terminada la carga genera el Excel.

Sin embargo, igual debes asegurarte de que las columnas de la información también se envíen al paquete. Eso es justo lo que me pasaba a mi. Te dejo un ejemplo de como indicarle al paquete laravel excel que debe incluir las columnas

<?php

namespace App\Exports;

use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;

use DB;

class ItemExport implements FromCollection,WithHeadings

{
    /**
    * @return \Illuminate\Support\Collection
    */
    public function collection()
    {
        //return Item::all();
        $datos = DB::table('items')->select('code_item','description','quantity','onhand')->where('status','=', 1)->get();
        return $datos ;
    }

    public function headings(): array
    {
        return ["Codigo", "Articulo", "Existencia Epp","Existencia Oracle"];
    }

}

Y al agregar las columnas ya no será necesario incluir las dos lineas que menciones anteriormente.

Related Posts Plugin for WordPress, Blogger...

publicidad

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *