Laravel - excel 导入数据

在Laravel中,可以使用maatwebsite/excel这个库来处理Excel文件的导入。

1.用命令行窗口打开项目根目录,使用 Composer 安装 maatwebsite/excel

composer require maatwebsite/excel --ignore-platform-reqs

在你的config/app.php文件中注册服务提供者(可选)

 
  1. 'providers' => [

  2. // ...

  3. Maatwebsite\Excel\ExcelServiceProvider::class,

  4. ],

注册门面(Facade)(可选)

 
  1. 'aliases' => [

  2. // ...

  3. 'Excel' => Maatwebsite\Excel\Facades\Excel::class,

  4. ],

2. 使用php artisan make:import命令创建一个新的导入类

php artisan make:import UsersImport --model=User

这将会生成一个新的Import类UsersImport,并且已经引入了你需要的User模型。

在生成的UsersImport类中,你需要定义collection方法来处理导入的数据集合,以及model方法来处理单个模型的导入。这里是一个简单的例子:

 
  1. // app/Imports/UsersImport.php

  2. namespace App\Imports;

  3. use App\Models\User;

  4. use Maatwebsite\Excel\Concerns\ToModel;

  5. use Maatwebsite\Excel\Concerns\Importable;

  6. class UsersImport implements ToModel

  7. {

  8. use Importable;

  9. public function model(array $row)

  10. {

  11. return new User([

  12. 'name' => $row[0],

  13. 'email' => $row[1],

  14. 'password' => \Hash::make($row[2]),

  15. ]);

  16. }

  17. }

 3.在控制器中,添加一个方法来处理文件上传,并且调用导入。

 
  1. // app/Http/Controllers/UserController.php

  2. namespace App\Http\Controllers;

  3. use App\Imports\UsersImport;

  4. use Illuminate\Http\Request;

  5. class UserController extends Controller

  6. {

  7. public function import(Request $request)

  8. {

  9. $request->validate([

  10. 'file' => 'required|file|mimes:xls,xlsx'

  11. ]);

  12. $file = $request->file('file');

  13. $import = new UsersImport();

  14. $import->import($file);

  15. return "Users imported successfully.";

  16. }

  17. }

 4.定义路由

 
  1. // routes/web.php

  2. use App\Http\Controllers\UserController;

  3. Route::post('/users/import', [UserController::class, 'import'])->name('users.import');

5.确保表单有enctype="multipart/form-data"属性,以便正确上传文件。

 
  1. <form action="{{ route('users.import') }}" method="POST" enctype="multipart/form-data">

  2. @csrf

  3. <input type="file" name="file">

  4. <button type="submit">Import</button>

  5. </form>

  • 14
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值