首先composer下载
composer require maatwebsite/excel
生成导入类
php artisan make:import BrandImport --model=Brand
导入文件地址
app/Imports/BrandImport.php
代码修改如下
<?php
namespace App\Imports;
use App\Models\Brand;
use Maatwebsite\Excel\Concerns\ToModel;
class BrandImport implements ToModel
{
/**
* @param array $row
*
* @return \Illuminate\Database\Eloquent\Model|null
*/
public function model(array $row)
{
return new Brand([
//导入文件的字段,可以打印$row进行调整
'name' => $row[1]
]);
}
}
生成导出类
php artisan make:export BrandExport --model=Brand
导出文件地址
app/Exports/BrandExport.php
导出代码如下
<?php
namespace App\Exports;
use App\Models\Brand;
use Maatwebsite\Excel\Concerns\FromCollection;
class BrandExport implements FromCollection
{
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
//导出所有数据,不包含表头
return Brand::all();
}
}
如果导出需要别的数据可以添加以下代码
//use Illuminate\Support\Facades\DB;
//Db::table('brand')->select('id','name')->get();
控制器内的代码如下
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Exports\BrandExport;
use App\Imports\BrandImport;
use Maatwebsite\Excel\Facades\Excel;
class BrandController extends Controller
{
/**
* @return \Illuminate\Support\Collection
*/
public function export()
{
//导出方法
$time = time();
return Excel::download(new BrandExport, $time.'.xlsx');
}
/**
* @return \Illuminate\Support\Collection
*/
public function import()
{
//导入方法
Excel::import(new BrandImport,\request()->file('file'));
return back();
//back()为布尔值可以判断后加入返回值
}
}
laravel的ajax文件上传见其他文章