pittacusw / excel
There is no license information available for the latest version (v2) of this package.
Collection-first Excel import and export helpers for Laravel
Fund package maintenance!
v2
2026-03-18 01:26 UTC
Requires
- php: ^8.1
- illuminate/contracts: ^9.0|^10.0|^11.0|^12.0|^13.0
- illuminate/http: ^9.0|^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^9.0|^10.0|^11.0|^12.0|^13.0
- maatwebsite/excel: ^3.1.68
Requires (Dev)
- laravel/pint: ^1.21
- mockery/mockery: ^1.6
- orchestra/testbench: ^7.0|^8.0|^9.0|^10.0|^11.0
- pestphp/pest: ^2.36|^3.8|^4.0
- pestphp/pest-plugin-arch: ^2.7|^3.0|^4.0
- phpstan/phpstan: ^1.12|^2.1
This package is auto-updated.
Last update: 2026-03-18 14:14:00 UTC
README
Lightweight collection-first helpers for importing and exporting spreadsheets in Laravel.
This package wraps maatwebsite/excel with a smaller API for the common cases:
- export collections or arrays with optional headings
- auto-derive headings from associative rows
- import spreadsheets directly into an
Illuminate\Support\Collection - work cleanly across Laravel 9, 10, 11, 12, and 13
Compatibility
| Laravel | Testbench | PHP |
|---|---|---|
| 9.x | 7.x | 8.1+ |
| 10.x | 8.x | 8.1+ |
| 11.x | 9.x | 8.2+ |
| 12.x | 10.x | 8.2+ |
| 13.x | 11.x | 8.3+ |
Installation
composer require pittacusw/excel
Usage
Inject the service:
use PittacusW\Excel\Excel; class ExportUsersController { public function __invoke(Excel $excel) { return $excel->download( rows: [ ['name' => 'Ada', 'email' => 'ada@example.com'], ['name' => 'Grace', 'email' => 'grace@example.com'], ], fileName: 'users', ); } }
Use the facade explicitly:
use PittacusW\Excel\Facades\Excel; $rows = Excel::import( file: $request->file('users.xlsx'), headingRow: 1, );
Export API
use PittacusW\Excel\Excel; $excel->download( rows: [ ['name' => 'Ada', 'email' => 'ada@example.com'], ], headings: ['Name', 'Email'], fileName: 'users', ); $excel->store( rows: [ ['name' => 'Ada', 'email' => 'ada@example.com'], ], filePath: 'exports/users.xlsx', ); $contents = $excel->raw( rows: [ ['name' => 'Ada', 'email' => 'ada@example.com'], ], );
Import API
use PittacusW\Excel\Excel; $rows = $excel->import( file: storage_path('app/imports/users.xlsx'), headingRow: 1, );
Imported rows are returned as an Illuminate\Support\Collection.
Public API
download(iterable $rows, array $headings = [], ?string $fileName = null, ?string $writerType = null, array $headers = []) store(iterable $rows, string $filePath, array $headings = [], ?string $disk = null, ?string $writerType = null, array|string $diskOptions = []) raw(iterable $rows, array $headings = [], ?string $writerType = null) import(string|\Illuminate\Http\UploadedFile $file, int $headingRow = 1, ?string $disk = null, ?string $readerType = null) makeExport(iterable $rows, array $headings = [], ?string $fileName = null) makeImport(int $headingRow = 1)
Upgrade Notes
- The package now ships a real
PittacusW\Excel\Excelservice behind the facade. - The automatic global
Excelalias was removed to avoid collisions withMaatwebsite\Excel\Facades\Excel. - Exports now normalize associative rows and can infer headings automatically.
- Imports now keep the imported collection available after execution.
Testing
composer test