Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Excel Laravel Package

maatwebsite/excel

Laravel Excel is a Laravel wrapper around PhpSpreadsheet for fast, elegant Excel/CSV exports and imports. Export collections or queries with automatic chunking for performance, generate downloadable files, and process imports cleanly in your app.

View on GitHub
Deep Wiki
Context7

🚀 Supercharged Excel exports and imports in Laravel

Frequently asked questions about Excel
How do I export a Laravel Eloquent collection to Excel using maatwebsite/excel?
Use the `FromCollection` class to export a collection. For example, `return (new ExportUsers)->toExcel('users.xlsx');` where `ExportUsers` extends `FromCollection` and defines a `collection()` method returning your collection. For CSV, append `->csv()` instead of `toExcel()`.
What’s the best way to handle large Excel exports in Laravel without timing out?
Leverage chunking with `chunkReadingEnabled(true)` in your export class or use Laravel queues by implementing `ShouldQueue` in your export class. This processes data in smaller batches and avoids memory issues. Pair it with `WithRetry` for robustness.
Does maatwebsite/excel support Laravel 11, and what’s the minimum Laravel version required?
Yes, it supports Laravel 11. The package works with Laravel 5.8 through 12.x. Always check the [official docs](https://docs.laravel-excel.com/3.1/getting-started/) for version-specific updates, especially after major Laravel releases.
How do I customize Excel cell formatting (colors, fonts, borders) in exports?
Use the `WithStyles` trait or manually apply styles via PhpSpreadsheet methods in your export class. For example, `public function styles(Sheet $sheet) { $sheet->getStyle('A1')->applyFromArray(['font' => ['bold' => true]]); }` or use Blade templates for dynamic styling.
Can I import Excel files with validation rules in Laravel Excel?
Yes, use the `WithValidation` trait in your import class. Define rules in a `rules()` method, and Laravel Excel will validate each row before importing. For example, `public function rules(): array { return ['email' => 'required|email']; }` in your import class.
What’s the difference between `toArray()` and `toCollection()` in imports?
`toArray()` converts each row into a plain array, while `toCollection()` returns a Laravel Collection. Use `toCollection()` if you need to chain Laravel Collection methods (e.g., `filter()`, `map()`) during import processing. Both methods are available in the `FromArray` or `FromCollection` import classes.
How do I queue Excel imports/exports to run in the background?
Extend your export/import class with `ShouldQueue` and implement the `handle()` method. Dispatch the job with `dispatch()` or `dispatchSync()` for immediate execution. For example: `Excel::queue(new ExportUsers)->store('local');` for queued exports.
Is there a way to test Excel exports/imports in Laravel’s PHPUnit?
Yes, mock the `Storage` facade or use temporary files for testing. For exports, assert file existence and content with `Storage::exists()` and `Storage::get()`. For imports, test validation rules or database changes in your test cases. Example: `public function test_export() { $this->assertTrue(Storage::exists('test.xlsx')); }`
Does maatwebsite/excel support multi-sheet Excel exports?
Yes, use the `WithMultipleSheets` trait in your export class. Define a `sheets()` method returning an array of sheet configurations, each with a `sheetName` and `sheetClass`. For example: `return [['sheetName' => 'Sheet1', 'sheetClass' => 'Sheet1'], ['sheetName' => 'Sheet2', 'sheetClass' => 'Sheet2']];`
What are the alternatives to maatwebsite/excel for Laravel Excel handling?
Alternatives include `box/spout` (lightweight, no PhpSpreadsheet dependency) and `league/csv` (for CSV-only needs). However, Laravel Excel offers deeper Laravel integration (queues, events, Eloquent support) and advanced Excel features like formulas, charts, and complex styling. For most use cases, it remains the most robust choice.
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed
zedmagdy/filament-business-hours
renatovdemoura/blade-elements-ui
devgeek/beacon-admin
benjamin-rqt/data-watcher-bundle
atriumphp/atrium
sandermuller/package-boost-laravel
sandermuller/boost-skills
redaxo/core
yusufgenc/filament-api-forge
l3aro/rating-star-for-filament
leek/filament-subtenant-scope
anil/file-picker
broqit/fields-ai