在控制器内部使用Excel包的Laravel

在控制器内部使用Excel包的Laravel,laravel,laravel-5,Laravel,Laravel 5,我尝试在控制器内部的laravel上使用Excel:@package maatwebsite/Excelpackage,但我得到以下错误: Non-static method Maatwebsite\Excel\Excel::create() should not be called statically, assuming $this from incompatible context 我的路线是: Route::get('all_users_report/{format}', 'Syst

我尝试在控制器内部的laravel上使用
Excel:@package maatwebsite/Excel
package,但我得到以下错误:

Non-static method Maatwebsite\Excel\Excel::create() 
should not be called statically, assuming $this from incompatible context
我的路线是:

Route::get('all_users_report/{format}', 'SystemExportDataController@all_users_report');
class SystemExportDataController extends Controller
{
    /**
     * @param $format
     */
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('My Site - all users report', function ($sheet) use ($format) {
                ........
            });
        })->export($format);
    }
}
BadMethodCallException in ServiceProvider.php line 234: 
Call to undefined method [package]
我的控制器是:

Route::get('all_users_report/{format}', 'SystemExportDataController@all_users_report');
class SystemExportDataController extends Controller
{
    /**
     * @param $format
     */
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('My Site - all users report', function ($sheet) use ($format) {
                ........
            });
        })->export($format);
    }
}
BadMethodCallException in ServiceProvider.php line 234: 
Call to undefined method [package]
发布更新2

'providers' => [
    ...
    'Maatwebsite\Excel\ExcelServiceProvider'
],
'aliases' => [
    ...
    'Excel'     => 'Maatwebsite\Excel\Facades\Excel'
],
错误:

Route::get('all_users_report/{format}', 'SystemExportDataController@all_users_report');
class SystemExportDataController extends Controller
{
    /**
     * @param $format
     */
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('My Site - all users report', function ($sheet) use ($format) {
                ........
            });
        })->export($format);
    }
}
BadMethodCallException in ServiceProvider.php line 234: 
Call to undefined method [package]
更新3:

Route::get('all_users_report/{format}', 'SystemExportDataController@all_users_report');
class SystemExportDataController extends Controller
{
    /**
     * @param $format
     */
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('My Site - all users report', function ($sheet) use ($format) {
                ........
            });
        })->export($format);
    }
}
BadMethodCallException in ServiceProvider.php line 234: 
Call to undefined method [package]
全级控制器:

<?php

namespace App\Http\Controllers;

use App\Http\Requests;
use Maatwebsite\Excel\Excel;

class SystemExportDataController extends Controller
{
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('Epay.Li - all users report', function ($sheet) use ($format) {
                $all_records = ChangeMoney::all();
                $sheet->loadView('layouts.admin.all_users_report',
                    array(
                        'all_records' => $all_records,
                    )
                );
            });
        })->export($format);
    }
}

您应该在
config/app.php
中的Facades数组中添加
'Excel'=>'Maatwebsite\Excel\Facades\Excel'
,并在提供者中添加
'Maatwebsite\Excel\ServiceProvider'
,以便按照您的方式使用它

或者您可以使用
$excel=App::make('excel')创建类的实例$excel->创建(…

更新

有两种方法可以调用Excel包:

其中之一是使用facade,但您必须在
config/app.php
中的Facades数组中添加
'Excel'=>'Maatwebsite\Excel\Facades\Excel'
,然后

<?php

namespace App\Http\Controllers;

use App\Http\Requests;

class SystemExportDataController extends Controller
{
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('Epay.Li - all users report', function ($sheet) use ($format) {
                $all_records = ChangeMoney::all();
                $sheet->loadView('layouts.admin.all_users_report',
                    array(
                        'all_records' => $all_records,
                    )
                );
            });
        })->export($format);
    }
}

您应该在
config/app.php
中将
'Excel'=>'Maatwebsite\Excel\Facades\Excel'
添加到Facades数组中,并将
'Maatwebsite\Excel\Excel\ServiceProvider'
添加到您的提供者中,以便按您的方式使用它

或者您可以使用
$excel=App::make('excel');
然后
$excel->create(…
)创建类的实例

更新

有两种方法可以调用Excel包:

其中之一是使用facade,但您必须在
config/app.php
中的Facades数组中添加
'Excel'=>'Maatwebsite\Excel\Facades\Excel'
,然后

<?php

namespace App\Http\Controllers;

use App\Http\Requests;

class SystemExportDataController extends Controller
{
    public function all_users_report($format)
    {
        Excel::create('all_users_records', function ($excel) use ($format) {
            $excel->sheet('Epay.Li - all users report', function ($sheet) use ($format) {
                $all_records = ChangeMoney::all();
                $sheet->loadView('layouts.admin.all_users_report',
                    array(
                        'all_records' => $all_records,
                    )
                );
            });
        })->export($format);
    }
}

我发现我需要预先添加一个反斜杠(表示),以确保它使用了Facade。这将使您的调用如下所示:

\Excel::create('all_users_records', function ($excel) use ($format) {
    $excel->sheet('Epay.Li - all users report', function ($sheet) use ($format) {
        $all_records = ChangeMoney::all();
        $sheet->loadView('layouts.admin.all_users_report',
            array(
                'all_records' => $all_records,
            )
        );
    });
})->export($format);

我发现我需要预先添加一个反斜杠(表示),以确保它使用了Facade。这将使您的调用如下所示:

\Excel::create('all_users_records', function ($excel) use ($format) {
    $excel->sheet('Epay.Li - all users report', function ($sheet) use ($format) {
        $all_records = ChangeMoney::all();
        $sheet->loadView('layouts.admin.all_users_report',
            array(
                'all_records' => $all_records,
            )
        );
    });
})->export($format);

调用静态方法(如
Excel::create())时,请使用
Use-Maatwebsite\Excel\Facades\Excel
not
Use-Maatwebsite\Excel\Excel;
当调用静态方法(如
Excel::create())时,请使用
Use-Maatwebsite\Excel\Facades\Excel

我已经编辑了我的帖子,但是如果你想使用facade,你只需添加它,以及
config/app.php中的提供者,就可以了。无需创建新实例:)您安装了软件包的第2版吗?
composer需要maatwebsite/excel:2.*
并请运行
composer dumpautoload
php artisan clear compiled
谢谢,请让我安装并测试该软件包,谢谢。我得到错误:(
非静态方法maatwebsite\excel\excel::create()不应该静态调用,假设$this来自不兼容的上下文
我粘贴了完整的类控制器i'm sorry sir,i get error
class excel不存在
我已经编辑了我的帖子,但是如果你想使用facade,你只需要添加它,以及
config/app.php
中的提供者,就可以了。不需要做任何更改w实例:)您安装了软件包的版本2吗?
composer需要maatwebsite/excel:2.*
并请运行
composer dumpautoload
php artisan clear compiled
谢谢,请让我安装并测试该软件包,谢谢先生。我得到错误:(
非静态方法maatwebsite\excel\excel::create()不应静态调用,假设$this来自不兼容的上下文
我粘贴了完整的类控制器i很抱歉,先生,我得到错误
类excel不存在