Search code examples
excellaravelmaatwebsite-excellaravel-excel

How to get excel to array in maatwebsite


I am trying to convert an Excel file to an array using the latest version of Laravel-Excel (3.1.9)

The code below will download the file:

return Excel::download(new SalesOrderExport('columns'),'test.xlsx')

But I need to convert it to get an array only. I don't want to store this Excel data in a database at this point.

I tried with the code below but it did not work as the load method is not available in version 3.

Excel::load($request->file('sampledata'), function ($reader) {
    return response()->json($reader);
});

Please share your thoughts on how to get an array from Excel.


Solution

  • I and @narayan tried hard to make requested excel file into array. Now I am able to get array properly with below code

    $rows = Excel::toArray(new SalesOrderImport, $request->file('sampledata')); 
    

    In my SalesOrderExport class I have default function only, which is required as abstract method.

    namespace App\Exports;
    
    use App\SalesOrder;
    use Maatwebsite\Excel\Concerns\FromCollection;
    
    class SalesOrderExport implements FromCollection
    {
        public function collection()
        {   
            return SalesOrder::all();
        }
    }
    

    My Controller code

    public function importTest(Request $request)
    {
        $rows = Excel::toArray(new SalesOrderImport, $request->file('sampledata'));
        return response()->json(["rows"=>$rows]);
    }
    

    And in HTML

    <input class="" type="file" name="sampledata" id="sampledata">
    

    I already created this export by

    php artisan make:import SalesOrder
    

    Attaching related images

    enter image description hereenter image description here