Laravel 中导入 Excel 文件
时间: 2024-02-05 16:12:33 浏览: 170
导入Excel文件
在 Laravel 中导入 Excel 文件,可以使用 Laravel Excel 包。下面是一些基本步骤:
1. 安装 Laravel Excel 包:
```
composer require maatwebsite/excel
```
2. 创建一个 Excel 导入类:
```
php artisan make:import UsersImport --model=User
```
3. 在 `UsersImport` 类中实现 `map` 和 `rules` 方法:
```php
<?php
namespace App\Imports;
use App\Models\User;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
class UsersImport implements ToModel, WithHeadingRow
{
public function model(array $row)
{
return new User([
'name' => $row['name'],
'email' => $row['email'],
'password' => Hash::make($row['password']),
]);
}
public function rules(): array
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users,email',
'password' => 'required|string|min:6',
];
}
}
```
4. 在控制器中使用 `Excel` 类导入 Excel 文件:
```php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use App\Imports\UsersImport;
class UserController extends Controller
{
public function import(Request $request)
{
$file = $request->file('file');
Excel::import(new UsersImport, $file);
return redirect()->back()->with('success', 'Users imported successfully.');
}
}
```
5. 在路由中定义导入 Excel 文件的路由:
```php
Route::post('/users/import', [UserController::class, 'import'])->name('users.import');
```
6. 创建一个表单,上传 Excel 文件:
```html
<form method="POST" action="{{ route('users.import') }}" enctype="multipart/form-data">
@csrf
<div class="form-group">
<label for="file">Choose file</label>
<input type="file" name="file" class="form-control-file" id="file">
</div>
<button type="submit" class="btn btn-primary">Import</button>
</form>
```
这样就可以在 Laravel 中导入 Excel 文件了。
阅读全文