📌  相关文章
📜  如何在我的 laravel 项目中实现 maatwebsite excel - PHP (1)

📅  最后修改于: 2023-12-03 15:24:38.215000             🧑  作者: Mango

如何在我的 Laravel 项目中实现 Maatwebsite Excel - PHP

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 的基本用法。如果您想了解更多信息,请查看以下资源: