Laravel excel 3.1导入

永远的零 2019-08-15 PM 90℃ 0条

3.1版本跟2.*版本差别还挺大,升级后也更符合面向对象思想,子类必须去实现父类方法,这具体可以参考以下案例

composer require maatwebsite/excel

添加ServiceProvider config/app.php

'providers' => [  Maatwebsite\Excel\ExcelServiceProvider::class,] 
'aliases' => ['Excel' => Maatwebsite\Excel\Facades\Excel::class, ]

发布配置,生成Excel.php的配置文件

php artisan vendor:publish

在控制器可写:

public function importQuestion(Request $request)
    {
        $excel_file_path = $request->file('question');//接受文件路径
        $datas = Excel::toArray(new Question, $excel_file_path);
       注意: 这里toArray()传第一个参数是,即将插入数据的对象,
             该对象必须对toArray()重写
       
       返回的$datas,接下来业务
    }

重写对象方法


//对该对象的重写,重写还有toModel,toCellection。。具体根据你的业务实现选择
可参看官方文档:https://laravel-excel.maatwebsite.nl/3.1/getting-started/installation.html
 
use App\Models\BaseModel;
use Maatwebsite\Excel\Concerns\ToArray;
 
class Question  extends BaseModel implements ToArray
{
  
    //重新父类实现
    public function array(array $array){
 
        return $array;
    }
}

参考文档

Laravel Excel:https://docs.laravel-excel.com/3.1/

人要么永不做梦,要么梦得有趣;人也必须学会清醒:要么永不清醒,要么清醒得有趣。

评论啦~