coolsam/excel-import

使用laravel-excel在FilamentPHP中实现易用的导入和导出

v1.1.0 2024-03-25 08:13 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此插件提供用户友好的Filament操作,让您一键使用maatwebsite/excel创建数据导入和导出。

安装

您可以通过composer安装此包

composer require coolsam/excel-import

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="coolsam-excel-config"

这是已发布配置文件的内容

return [
    'accepted_mimes' => [
        'application/vnd.ms-excel',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
        'text/csv',
        'text/plain',
        'csv',
        'txt',
    ],
    'temporary_files' => [
        'disk' => 'local',
        'directory' => 'coolsam-excel',
    ],
];

用法

导入

该包提供两种导入记录的操作:页面操作和表格操作。

在列表页面中使用页面操作

在您的资源列表页面中添加以下导入操作,例如ListUsers

    use Coolsam\FilamentExcel\Actions\ImportAction;
    use Coolsam\FilamentExcel\Actions\ImportField;
    protected function getHeaderActions(): array
    {
        return [
            ImportAction::make('users')->fields([
                ImportField::make('name')->required(),
                ImportField::make('email')->required(),
            ]),
            ... ,// Other Actions
        ];
    }

在资源类中使用表格操作

将以下内容链接到资源类中的 $table 变量。这在您希望在一个关系管理器类中导入子记录时也很有用。请注意,导入部分的Action不同。

use Coolsam\FilamentExcel\Actions\ImportField;
use Coolsam\FilamentExcel\Actions\Tables\ImportAction;

    $table->headerActions([
        ImportAction::make('import users')
            ->fields([
                ImportField::make('name')->required(),
                ImportField::make('email')->required(),
            ])->uniqueField('email')
            ->createRecordUsing(fn($data) => User::updateOrCreate(
                ['email' => $data['email']],
                $data
            ))
    ])

唯一字段

如果您想跳过DB中已经存在的某些记录,您需要指定一个唯一字段来检查现有字段。

    $table->headerActions([
        ImportAction::make('import users')
            ->fields([
                ImportField::make('name')->required(),
                ImportField::make('email')->required(),
            ])->uniqueField('email')
            ->createRecordUsing(fn($data) => User::updateOrCreate(
                ['email' => $data['email']],
                $data
            ))
    ])

手动处理记录创建过程

您可能更喜欢控制一切,并希望在给定数据的情况下自己创建记录。以下是方法

    $table->headerActions([
        ImportAction::make('import users')
            ->fields([
                ImportField::make('name')->required(),
                ImportField::make('email')->required(),
            ])->createRecordUsing(fn($data) => User::updateOrCreate(
                ['email' => $data['email']],
                $data
            ))
    ])

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。