📜  如何在 laravel excel 命令中导入 - PHP (1)

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

如何在 Laravel Excel 命令中导入

在 Laravel 中,我们可以使用 Laravel Excel 来导入和导出 Excel 文件。在本文中,我们将讨论如何在 Laravel Excel 命令中导入 Excel 文件。

安装 Laravel Excel

首先,我们需要安装 Laravel Excel。通过 Composer,我们可以运行以下命令来安装 Laravel Excel:

composer require maatwebsite/excel

Laravel Excel 已经被集成到 Laravel CLI 中,所以我们不需要单独安装它。

准备 Excel 文件

在导入 Excel 文件之前,我们需要准备好 Excel 文件。可以使用 Excel 手动创建文件,也可以使用其他工具自动生成文件。

Excel 文件应该包含表头和数据。例如,如果我们正在导入用户数据,我们的 Excel 文件可能如下所示:

| ID | Name | Email | |----|----------|----------------------| | 1 | John Doe | john.doe@example.com | | 2 | Jane Doe | jane.doe@example.com |

文件应该保存为 .xlsx.xls 格式。

创建导入命令

现在,我们可以使用 Artisan 命令来创建一个导入命令:

php artisan make:command ImportUsers

这将创建一个新的命令类 ImportUsers,该命令位于 app/Console/Commands 目录中。

打开 ImportUsers 类并添加以下代码:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Maatwebsite\Excel\Facades\Excel;
use App\Models\User;

class ImportUsers extends Command
{
    protected $signature = 'import:users {file}';
    protected $description = 'Import users from Excel file';

    public function handle()
    {
        $file = $this->argument('file');

        Excel::import($file, function ($row) {
            User::create([
                'name' => $row[1],
                'email' => $row[2],
            ]);
        });

        $this->info('Users imported successfully.');
    }
}

在这里,我们定义了一个带有单个参数 file 的 Artisan 命令签名,该参数是要导入的 Excel 文件的路径。在 handle() 方法中,我们使用 Excel::import() 方法导入 Excel 文件。此方法接受两个参数:要导入的文件和回调函数。

回调函数将在每行数据上调用一次。在这里,我们将用户记录添加到数据库中。

最后,我们输出导入数据的成功消息。

运行导入命令

现在,我们可以使用 Artisan 命令运行导入命令:

php artisan import:users users.xlsx

在这里,我们指定了要导入的 Excel 文件的路径 users.xlsx

如果一切正常,我们将看到 “Users imported successfully.” 成功消息,并且 Excel 文件中的数据已被导入到数据库中。

结论

在本文中,我们使用 Laravel Excel 的 Excel::import() 方法导入 Excel 文件。我们创建了一个新的 Artisan 命令来运行导入操作,并将每行数据添加到数据库中。通过这种方式,您可以轻松地将 Excel 数据导入到 Laravel 中的数据库中。