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/