maatwebsite/excel
Laravel Excel is a Laravel wrapper for PhpSpreadsheet that makes Excel/CSV exports and imports simple and fast. Export collections or queries with automatic chunking, handle large datasets efficiently, and integrate cleanly into your Laravel apps.
FromModel, FromCollection, FromView).WithValidation, WithChunkReading, WithEvents) via traits, enabling granular customization without bloating core logic.BeforeImport, AfterImport, FailedImport), enabling observability and extensibility.composer require maatwebsite/excel) + service provider registration. No complex dependencies beyond Laravel core.config/excel.php).return Excel::download()) and CLI imports/exports (e.g., php artisan excel:import).assertExported, assertImported) and mocking utilities reduce test complexity.WithChunkReading) and queuing.WithValidation trait).WithFormatData) adds cognitive load.QueueExport) require Redis/Database queues, adding operational complexity.WithValidation may require customization.WithFormatData or WithStyles will be critical.FailedImport events but requires custom logic.WithUpserts).storage_path() or custom paths.request()->file()) and direct paths.FromView) enable server-side Excel generation from HTML tables.composer require maatwebsite/excel
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" --tag=config
config/excel.php) and optional migrations (for tracking imports).use Maatwebsite\Excel\Facades\Excel;
use App\Exports\UsersExport;
return Excel::download(new UsersExport);
use Maatwebsite\Excel\Facades\Excel;
use App\Imports\UsersImport;
Excel::import(new UsersImport, request()->file('file'));
use WithValidation).public function chunkSize(): int { return 1000; }.public function handle(): void { $this->dispatch($this->chunk)->onQueue('excel'); }.composer.json.FromModel requires Eloquent. Works with raw queries via FromQuery.laravel-nova-excel package extends functionality for Nova admin panels.FailedImport events).assertExported, assertImported).config/excel.php (e.g., chunk_size, timezone) reduce drift.FailedImport events. Ensure logging drivers (e.g., Monolog) are configured.Excel::store() to debug files before download.WithValidation to surface row-level errors.failed_jobs table for queued export failures.memory_limit for large files (e.g., ini_set('memory_limit', '512M')).delimiter in imports.ShouldQueue to process large files asynchronously.chunk_size for memory-constrained environments (default: 1000).'cache' => true in config) to reduce memory spikes.FromQuery exports may overload DB connections. Use cursor() for queries.storage disk settings.return response()->stream() for chunked responses.| Failure Scenario | Impact | Mitigation |
How can I help you explore Laravel packages today?