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

Laravel报错:调用未定义方法Maatwebsite\Excel\Excel::load()求解决

问题

运行Excel导入脚本时出现报错:Call to undefined method Maatwebsite\Excel\Excel::load(),尝试替换为Excel::import()后问题仍未解决,相关代码如下:

public function postImport(Request $request)
{
    // $this->validate($request, [
    //     'file'  => 'required|mimes:xls,xlsx'
    //    ]);
  
       $path = $request->file('file')->getRealPath();
  
       $data = Excel::load($path)->get();
    // $data = Excel::toArray([],$path);
       
  
       if($data->count() > 0)
       {
        foreach($data->toArray() as $key => $value)
        {
         foreach($value as $row)
         {
          $insert_data[] = array(
            'nomorUrut' => $row[0],
            'namaSupplier' => $row[1], 
            'singkatanSupplier' => $row[2], 
            'tipeSupplier' => $row[3], 
            'alamatSupplier' => $row[4], 
            'kodePosSupplier' => $row[5], 
            'noTelpSupplier' => $row[6], 
            'noFax' => $row[7],
            'emailSupplier' => $row[8],
            'contakSupplier' => $row[9],
            'hp' => $row[10],
          );
         }
        }
  
        if(!empty($insert_data))
        {
         DB::table('uplSupplier')->insert($insert_data);
        }
       }
       return back()->with('success', 'Excel Data Imported successfully.');
    //   }
解决方案

这个报错的核心原因是Maatwebsite/Laravel-Excel版本差异:load()是2.x版本的专属方法,3.x及以上版本已完全移除该方法,直接替换成import()无效是因为二者用法逻辑完全不同。针对你的需求,提供两种可直接复用的修改方案:

方案一:直接用toArray()读取(快速适配现有代码)

3.x+版本支持通过Excel::toArray()直接读取文件内容,修改后的控制器代码如下:

public function postImport(Request $request)
{
    // 建议开启验证,避免无效文件上传
    $this->validate($request, [
        'file'  => 'required|mimes:xls,xlsx'
    ]);
  
    $path = $request->file('file')->getRealPath();
    // 使用toArray读取,第一个参数传空数组即可
    $data = Excel::toArray([], $path);
  
    $insert_data = [];
    // toArray返回二维数组,外层是工作表集合,$data[0]代表第一个工作表的行数据
    foreach($data[0] as $row)
    {
        $insert_data[] = [
            'nomorUrut' => $row[0],
            'namaSupplier' => $row[1], 
            'singkatanSupplier' => $row[2], 
            'tipeSupplier' => $row[3], 
            'alamatSupplier' => $row[4], 
            'kodePosSupplier' => $row[5], 
            'noTelpSupplier' => $row[6], 
            'noFax' => $row[7],
            'emailSupplier' => $row[8],
            'contakSupplier' => $row[9],
            'hp' => $row[10],
        ];
    }
  
    if(!empty($insert_data))
    {
        DB::table('uplSupplier')->insert($insert_data);
    }

    return back()->with('success', 'Excel数据导入成功。');
}

方案二:使用官方推荐的导入类(适合复杂场景)

如果后续需要添加数据验证、批量处理、错误捕获等功能,建议使用官方标准的导入类方案:

  1. 生成导入类文件
php artisan make:import SupplierImport
  1. 修改app/Imports/SupplierImport.php内容:
namespace App\Imports;

use Illuminate\Support\Facades\DB;
use Maatwebsite\Excel\Concerns\ToCollection;
use Illuminate\Support\Collection;

class SupplierImport implements ToCollection
{
    public function collection(Collection $rows)
    {
        $insert_data = [];
        foreach ($rows as $row) 
        {
            $insert_data[] = [
                'nomorUrut' => $row[0],
                'namaSupplier' => $row[1], 
                'singkatanSupplier' => $row[2], 
                'tipeSupplier' => $row[3], 
                'alamatSupplier' => $row[4], 
                'kodePosSupplier' => $row[5], 
                'noTelpSupplier' => $row[6], 
                'noFax' => $row[7],
                'emailSupplier' => $row[8],
                'contakSupplier' => $row[9],
                'hp' => $row[10],
            ];
        }
        
        if(!empty($insert_data)){
            DB::table('uplSupplier')->insert($insert_data);
        }
    }
}
  1. 更新控制器方法:
use App\Imports\SupplierImport;
use Maatwebsite\Excel\Facades\Excel;

public function postImport(Request $request)
{
    $this->validate($request, [
        'file'  => 'required|mimes:xls,xlsx'
    ]);
  
    Excel::import(new SupplierImport, $request->file('file'));
  
    return back()->with('success', 'Excel数据导入成功。');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:08:08