user9653376
user9653376

Reputation:

Call to undefined method Maatwebsite\Excel\Excel::create() - laravel 5.6

I am using Maatwebsite/Excel in my application and when i get the error

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

from one of my controllers. I am using laravel 5.6 and i have followed the documentation strictly and other very few related discussions online to solve this, but i still get the error.

How do i solve this error please

app.php

'provider' => 'Maatwebsite\Excel\ExcelServiceProvider',

'alias' => 'Excel'=>  'Maatwebsite\Excel\Facades\Excel',

Controller

$cl = ClassModel::Select('name')->where('code',$input->class)->first();
        $input->class=$cl->name;
        $fileName=$input->class.'-'.$input->section.'-'.$input->session.'-'.$input->exam;
        // return $students;
        Excel::create($fileName, function($excel) use($input,$subjects,$students) {
            $excel->sheet('New sheet', function($sheet) use ($input,$subjects,$students) {
                $sheet->loadView('app.excel',compact('subjects','input','students'));
            });
        })->download('xlsx');

Upvotes: 4

Views: 14301

Answers (5)

kropani
kropani

Reputation: 1

I have worked it around but I know it's not a perfect solution. It will really help you if you only have concerns with the uploading not adjusting Crudbooster features.

  1. I removed the extra features from the importing screen of the Crudbooster by applying the following CSS in the crudbooster-controller.

         $this->style_css = "ul.nav li:not(:first-child) {
             display: none;
         }";
    
  2. I copied the getImportData() method from Crudbooster CBController and overridden it in the crudbooster-controller by the following code.

//PHP
//By the way, you can still create your own method in here... :)

public function getImportData()
        {
            $this->cbLoader();
            $data['page_menu'] = Route::getCurrentRoute()->getActionName();
            $data['page_title'] = 'Import Data';

            if (request('file') && ! request('import')) {
                $file = base64_decode(request('file'));
                $file = storage_path('app/'.$file);

                $data = Excel::import(new ProductImport, $file);

                CRUDBooster::redirect('/admin/products', cbLang("alert_add_data_success"), 'success');
            }

            return view('crudbooster::import', $data);

        }

Importing is working fine now

Upvotes: 0

Patrick Brouwers
Patrick Brouwers

Reputation: 71

You are using 2.* syntax while using 3.* package. Please refer to the correct documentation over here: https://laravel-excel.maatwebsite.nl/docs/3.0/export/basics

Upvotes: 3

Zakaria Acharki
Zakaria Acharki

Reputation: 67505

Try to decrease the version using :

composer require "maatwebsite/excel=2.1.0"

Upvotes: 1

AddWeb Solution Pvt Ltd
AddWeb Solution Pvt Ltd

Reputation: 21681

Please switch to version 2*

Version 3.0 of that package doesn't handle imports yet. Release date for this feature is unknown. See this post for more details: maatwebsite

Upvotes: 0

Saurabh
Saurabh

Reputation: 2775

There have been many changes in the new version of the package.

In your composer.json file inside the require array replace your package with this:

"maatwebsite/excel": "~2.1.0",

and then run composer update This should work fine.

Upvotes: 0

Related Questions