【问题标题】:Call to undefined method Maatwebsite\Excel\Excel::load()调用未定义的方法 Maatwebsite\Excel\Excel::load()
【发布时间】:2018-03-25 06:20:21
【问题描述】:

我正在尝试使用 maatwebsite 3.0 导入 excel 文件 (.xlsx)。如何解决此错误

调用未定义的方法 Maatwebsite\Excel\Excel::load()

我的控制器

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);
                }
            }
        }
    }
}

【问题讨论】:

    标签: php excel laravel laravel-5 maatwebsite-excel


    【解决方案1】:

    该软件包的 3.0 版本尚不处理导入。此功能的发布日期未知。更多详情见此帖:https://medium.com/@maatwebsite/laravel-excel-lessons-learned-7fee2812551

    我建议您切换到第 2 版。*.

    如果您想进一步继续 所有 Laravel Excel 2.* 方法都已弃用,将无法在 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 没有提供方便的样式设置方法,建议您使用 PhpSpreadsheets 原生方法。

    【讨论】:

    • @RioAditya 你能把问题标记为已回答吗?
    • 3.1 版现已提供导入功能docs.laravel-excel.com/3.1/imports
    • 我的整个项目都在 laravel 6.18 中,现在我无法安装 maatwebsite/excel 2.1 或更接近的版本,请帮助
    • @Swarnadeep 你安装了 maatwebsite/excel 2.1 并检查了吗?
    【解决方案2】:

    所有 Laravel Excel 2.* 方法都已弃用,将无法在 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 没有提供方便的样式设置方法,建议您使用 PhpSpreadsheets 原生方法。

    【讨论】:

    • 这个 cpuld 是标记的答案
    【解决方案3】:

    您好,在第 3 版中,加载方法已被删除,因此请切换回第 2 版,尝试使用此命令,

    composer require "maatwebsite/excel:~2.1.0"

    【讨论】:

    • 它实际上是 "maatwebsite/excel":"~2.1.0"
    • 给出错误“- 结论:删除 laravel/framework v5.8.18” 所以它可能与新版本不兼容。
    • 我有 v2.1 maatwebsite/excel 和 5.8 laravel 我需要降级我的 laravel 版本吗? \
    【解决方案4】:

    ^3.0 版本的maatwebsite/excel 不支持加载。
    先删除config/excel.php文件。

    通过更改您的 composer.json 文件来降级 maatwebsite/excel 版本 "maatwebsite/excel": "^3.1",到"maatwebsite/excel": "~2.1.0",并执行“作曲家更新”。

    如果出现错误:

    2.1 版本中未定义的类常量 'XLSX'

    这是你必须做的。
    降级前删除config/excel.php,然后执行composer更新。

    【讨论】:

    • 不适用于 laravel 6,它的依赖不匹配
    【解决方案5】:

    Laravel Excel 3.0 版不处理导入。

    您还可以使用与导入一起使用的替代包,例如:

    两个句柄导入。

    您也可以切换到版本 2,但这意味着使用旧版本的 lib。

    【讨论】:

      【解决方案6】:

      不要惊慌 :) 就这样做

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

      只需传递一个空数组作为第一个参数

      【讨论】:

        猜你喜欢
        • 2021-02-06
        • 2019-11-02
        • 2018-10-28
        • 2018-11-09
        • 2019-10-15
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多