22

I'm trying to import excel file (.xlsx) using maatwebsite 3.0. How to fix This error

Call to undefined method Maatwebsite\Excel\Excel::load()

My controller

public function importsave(Request $request)
{
   if($request->hasFile('excel'))
    {
        $path = $request->file('excel')->getRealPath();
        $data= Excel::load($path, function($reader) {})->get();
        if(!empty($data) && $data->count())
        {
            foreach($data->toArray() as $key=>$value)
            {
                if(!empty($value))
                {
                    Employee::insert($value);
                }
            }
        }
    }
}
jedrzej.kurylo
  • 39,591
  • 9
  • 98
  • 107
Rio Aditya
  • 253
  • 1
  • 2
  • 7

6 Answers6

34

Version 3.0 of that package doesn't handle imports yet. Release date for this feature is unknown. See this post for more details: https://medium.com/@maatwebsite/laravel-excel-lessons-learned-7fee2812551

I suggest you switch to version 2.*.

Else you want to continue further ALL Laravel Excel 2.* methods are deprecated and will not be able to use in 3.0 .

   Excel::load() is removed and replaced by Excel::import($yourImport)
    Excel::create() is removed and replaced by Excel::download/Excel::store($yourExport)
    Excel::create()->string('xlsx') is removed an replaced by Excel::raw($yourExport, Excel::XLSX)

3.0 provides no convenience methods for styling, you are encouraged to use PhpSpreadsheets native methods.

Ronny Dsouza
  • 358
  • 2
  • 12
jedrzej.kurylo
  • 39,591
  • 9
  • 98
  • 107
12

Hi there in version 3 the load method was remove so switch back to version two like so try using this command,

composer require "maatwebsite/excel:~2.1.0"

Keyur
  • 1,113
  • 1
  • 23
  • 42
Dawood Iddris
  • 121
  • 1
  • 4
12

ALL Laravel Excel 2.* methods are deprecated and will not be able to use in 3.0 .

Excel::load() is removed and replaced by Excel::import($yourImport)
Excel::create() is removed and replaced by Excel::download/Excel::store($yourExport)
Excel::create()->string('xlsx') is removed an replaced by Excel::raw($yourExport, Excel::XLSX)

3.0 provides no convenience methods for styling, you are encouraged to use PhpSpreadsheets native methods.

10

Dont panic :) Just do like this

Excel::toArray([],$filePath);

Just pass an empty array as the first parameter

konik
  • 173
  • 1
  • 2
  • 8
9

^3.0 versions of maatwebsite/excel does not support loads.
Delete the config/excel.php file first .

Downgrade the maatwebsite/excel version by changing your composer.json file from "maatwebsite/excel": "^3.1", to "maatwebsite/excel": "~2.1.0", and performing 'composer update'.

And if you get an error:

Undefined class constant 'XLSX' in 2.1 version

this is what you have to do.
Delete the config/excel.php before downgrading then perform the composer update.

MartenCatcher
  • 2,713
  • 8
  • 26
  • 39
Aravind
  • 191
  • 2
  • 10
3

Version 3.0 of Laravel Excel doesn't handle imports.

You could also use an alternative package that works with import such as:

Both handles import.

You could also switch to version 2, but it means use an old version of a lib.

rap-2-h
  • 30,204
  • 37
  • 167
  • 263