📅  最后修改于: 2023-12-03 15:24:38.215000             🧑  作者: Mango
Maatwebsite Excel 是一个流行的 PHP 扩展包,可以帮助我们在 Laravel 项目中实现 Excel 的读写和导入导出等功能。使用 Maatwebsite Excel 可以很容易地将数据以 Excel 文件的形式展示给终端用户,也可以将数据从 Excel 文件中快速导入到 Laravel 应用中。
Maatwebsite Excel 可以通过 Composer 安装,执行以下命令:
composer require maatwebsite/excel
如果你使用 Laravel 5.5 及以上版本,可以跳过此步骤,因为 Laravel 默认支持自动发现包。
安装完成后,需要在 Laravel 项目中添加服务提供者和门面,打开 config/app.php
文件,添加以下内容:
'providers' => [
// ...
Maatwebsite\Excel\ExcelServiceProvider::class,
],
'aliases' => [
// ...
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
],
启用 Laravel 认证的用户授权,以便使用 Auth::user()
控制用户可以导出或导入还是不能。添加以下代码到 app/Http/Kernel.php 的 $routeMiddleware 中:'auth.excel' => \YourApplicationNamespace\Excel\Middleware\Authorize::class,
导出的使用非常简单,只需创建一个导出类并实现Maatwebsite\Excel\Concerns\FromCollection
接口即可。该接口的唯一方法是fromCollection()
,我们需要在该方法中返回一个包含要导出的数据的集合对象。
例子:
namespace App\Exports;
use App\User;
use Maatwebsite\Excel\Concerns\FromCollection;
class UsersExport implements FromCollection
{
public function collection()
{
return User::all();
}
}
要从控制器中调用导出类,我们可以使用以下方法:
use App\Exports\UsersExport;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function export()
{
return Excel::download(new UsersExport, 'users.xlsx');
}
}
导出类可以返回不同类型的数据 - 集合、查询构建器、数组等等。可以通过查看 Maatwebsite Excel 的官方文档,了解更多关于导出的设置和用法。
导入也非常简单,只需创建一个导入类并实现Maatwebsite\Excel\Concerns\ToModel
接口即可。该接口需要实现一个toModel()
方法,在该方法中,我们需要将 Excel 表中的每个行映射到我们的数据模型中的属性。
例子:
namespace App\Imports;
use App\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' => bcrypt($row['password']),
]);
}
}
要从控制器中使用导入类,我们可以使用以下方法:
use App\Imports\UsersImport;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function import(Request $request)
{
Excel::import(new UsersImport, $request->file('file'));
return redirect()->back()->with('success', '数据导入成功。');
}
}
将 Excel 文件上传到服务器后,我们可以使用上面的方法来将其导入到我们的应用程序中。
这里我们仅介绍了 Maatwebsite Excel 的基本用法。如果您想了解更多信息,请查看以下资源: