PHP code example of hayderhatem / filament-excel-import
1. Go to this page and download the library: Download hayderhatem/filament-excel-import library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
hayderhatem / filament-excel-import example snippets
namespace App\Filament\Resources;
use App\Filament\Imports\UserImporter;
use App\Models\User;
use Filament\Actions;
use Filament\Resources\Resource;
use HayderHatem\FilamentExcelImport\Actions\Concerns\CanImportExcelRecords;
class UserResource extends Resource
{
protected static ?string $model = User::class;
public static function getHeaderActions(): array
{
return [
Actions\ImportAction::make()
->importer(UserImporter::class),
];
}
}
Actions\ImportAction::make()
->importer(UserImporter::class)
// Standard Filament options
->chunkSize(1000)
->maxRows(10000)
->headerOffset(0) // Row number where headers are located (0-based)
->job(CustomImportJob::class) // Custom job class
// Excel-specific options
->activeSheet(0) // Which Excel sheet to import (0-based)
->useStreaming(true) // Force streaming mode
->streamingThreshold(10 * 1024 * 1024) // 10MB threshold for auto-streaming
Actions\ImportAction::make()
->importer(UserImporter::class)
->activeSheet(0) // Default to first sheet
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Toggle;
Actions\ImportAction::make()
->importer(UserImporter::class)
->additionalFormComponents([
Select::make('department_id')
->label('Default Department')
->options(Department::pluck('name', 'id'))
->
use HayderHatem\FilamentExcelImport\Traits\CanAccessAdditionalFormData;
class UserImporter extends Importer
{
use CanAccessAdditionalFormData;
public function import(array $data, array $map, array $options = []): void
{
$departmentId = $this->getAdditionalFormValue('department_id');
$sendEmail = $this->getAdditionalFormValue('send_welcome_email', false);
// Your import logic...
}
}
// Files larger than 10MB (default) will automatically use streaming
Actions\ImportAction::make()
->importer(UserImporter::class)
->streamingThreshold(5 * 1024 * 1024) // Custom 5MB threshold
Actions\ImportAction::make()
->importer(UserImporter::class)
->useStreaming(true) // Always use streaming
// or
->useStreaming(false) // Never use streaming
// or
->useStreaming(null) // Auto-detect (default)
use HayderHatem\FilamentExcelImport\Actions\Imports\Jobs\ImportExcel;
class CustomImportJob extends ImportExcel
{
public function handle(): void
{
// Custom pre-processing
parent::handle();
// Custom post-processing
}
}
// Use in your action
Actions\ImportAction::make()
->importer(UserImporter::class)
->job(CustomImportJob::class)
// Errors are automatically translated and user-friendly
// - "Email field is alid department reference" instead of foreign key errors
// Before
use Filament\Actions\Concerns\CanImportRecords;
// After
use HayderHatem\FilamentExcelImport\Actions\Concerns\CanImportExcelRecords;
Actions\ImportAction::make()
->importer(UserImporter::class)
// Your existing configuration works as-is
->chunkSize(500)
->maxRows(5000)
// Add new Excel features
->activeSheet(0)
->useStreaming(true)
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.