You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel报错:调用未定义方法Maatwebsite\Excel\Excel::create()求助

解决Maatwebsite Excel Excel::create() 未定义方法的问题

嘿,这个问题我之前也踩过坑!你碰到的Call to undefined method Maatwebsite\Excel\Excel::create()错误,核心原因是版本不兼容:Excel::create()是Maatwebsite Excel 2.x版本的写法,而你当前安装的大概率是3.0及以上的新版本,这个方法在新版本里已经被移除了,和你有没有配置服务提供者/别名没关系哦。

下面给你两种解决方案,推荐用第一种适配新版本的写法:

方案一:适配3.x+版本(推荐)

新版本的Maatwebsite Excel采用了基于「导出类」的架构,写法更规范,步骤如下:

  1. 生成导出类
    在终端执行Artisan命令,生成一个导出类:

    php artisan make:export ItemsExport
    

    这个命令会在app/Exports目录下生成ItemsExport.php文件。

  2. 编写导出类逻辑
    打开生成的ItemsExport.php,修改成以下内容(适配你的Item模型):

    <?php
    
    namespace App\Exports;
    
    use App\Models\Item; // 注意引入你的Item模型
    use Maatwebsite\Excel\Concerns\FromCollection;
    
    class ItemsExport implements FromCollection
    {
        // 定义要导出的数据集合
        public function collection()
        {
            return Item::get(); // 和你原代码里的查询逻辑一致
        }
    }
    
  3. 修改控制器代码
    更新你的export_app_csv方法,使用新版本的导出方式:

    <?php
    
    namespace App\Http\Controllers;
    
    use App\Exports\ItemsExport; // 引入刚才生成的导出类
    use Maatwebsite\Excel\Facades\Excel;
    
    class YourController extends Controller // 替换成你的控制器名称
    {
        public function export_app_csv()
        {
            // 直接调用Excel的download方法,传入导出类实例和文件名
            return Excel::download(new ItemsExport, 'test_export.xlsx');
        }
    }
    

方案二:降级到2.x版本(不推荐)

如果你暂时不想改代码,也可以降级到支持Excel::create()的2.x版本,但要注意这个版本只兼容Laravel 5.x系列,执行以下Composer命令:

composer require maatwebsite/excel:2.1.30

降级后,你原有的控制器代码就能正常运行了,但新版本的功能你就用不上啦,所以还是推荐升级写法。

额外提醒

确认你的config/app.php配置是正确的(你已经加了服务提供者和别名,这部分没问题):

// 服务提供者
'providers' => [
    // ...
    Maatwebsite\Excel\ExcelServiceProvider::class,
],

// 别名
'aliases' => [
    // ...
    'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],

内容的提问来源于stack exchange,提问作者Lucentyr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:33:52