maatwebsite/excel
Supercharged Excel exports and imports in Laravel
4.0.1
166M downloads/mo
#264 most downloaded on Packagist
SpartnerNL/Laravel-Excel
What this package is like to depend on
Last release 5 days ago
18 Aug 2026
Release timing varies
gaps range from 8 days to 7 months
Rarely documented
notes for 35 of 186 stable releases
Nothing withdrawn
no release was ever pulled
13 years old
187 releases · first in 2013
5 releases in the last 12 months
see the full history below
Release timeline
187 releases · Nov 2013 to Aug 2026Releases
latest 60 of 187-
4.0.118 Aug 2026Release notes
Open source →What's Changed
- [4.x] Add Time/Enum column types and sheet-level export concerns by @IonBazan in #4417
- [4.x] Configuration from environment by @finagin in #4418
- Update upgrade guide with WithMultipleSheets by @IonBazan in #4421
- Adjust phpdoc types/generics to add defaults by @billypoke in #4422
New Contributors
Full Changelog: 4.0.0...4.0.1
-
4.0.013 Aug 2026Release notes
Open source →What's Changed
- [4.x] Upgrade PHPOffice to v5 by @IonBazan in #4302
- Bump PhpSpreadsheet to 5.3 by @GNfsys in #4333
- Fix 8.5 deprecation by @amooij in #4334
- Allow queue jobs with batches by @dazza-dev in #4341
- Sync latest changes from 3.1 to 4.x by @AJenbo in #4343
- Add additional tests explicitly for latest phpspreadsheet version by @billypoke in #4347
- Sync 3.x to 4.x by @billypoke in #4351
- 4.x: Bump required PHP and Laravel versions by @AJenbo in #4361
- 4.x: Initialize rector, apply targeted rule sets up to minimum currently supported php version (8.3) by @billypoke in #4360
- 4.x: Replace StyleCI wtih Pint by @AJenbo in #4362
- Docs: warn that FromQuery requires a unique ORDER BY by @stllmtbrt in #4369
- 4.x: Specify supported PHPUnit versions and modernize phpunit.xml.dist by @billypoke in #4364
- 4.x: Address most issues found by PHPStan at level 0 by @AJenbo in #4359
- Modernise (PHP 8.3) using PHP-cs-fixer by @AJenbo in #4370
- Apply native types by @AJenbo in #4371
- Revert typed CacheInterface methods on deprecated cache drivers by @RenautMestdagh in #4372
- 4.x: Resolve PHPStan level 2 by @AJenbo in #4374
- Test lowest dependencies in CI and improve DX by @AJenbo in #4376
- PHPStan level 3 by @AJenbo in #4378
- chore: remove ext-json dependency from composer.json and normalize it by @maks-oleksyuk in #4383
- V4: Support the #[Queue] and #[Connection] attributes on imports by @markwalet in #4382
- [4.0] Improve Tests by @IonBazan in #4392
- Solve PHPStan level 4 issues by @AJenbo in #4386
- [4.0] Fix WithProgressBar regression by @IonBazan in #4391
- [4.0] Add FromScout interface by @IonBazan in #4390
- 4.x: Merge 3.1 by @AJenbo in #4398
- feat: add Laravel Boost skill configuration and documentation by @eramitgupta in #4399
- Resolve PHPStan level 5 issues by @AJenbo in #4396
- Resolve PHPStan level 6 by @AJenbo in #4397
- chore: update composer dependencies, export-ignore entries and CI by @maks-oleksyuk in #4384
- Apply Rector with curated rule set and scoped skips by @billypoke in #4377
- Prepare 4.0.0 release by @AJenbo in #4400
- Rector Import Names and Type Declaration Docblocks adoption by @billypoke in #4395
- [4.x] Add WithExportTemplate concern by @allanmcarvalho in #4406
- [4.x] [RFC] Introduce Export and Import interfaces by @IonBazan in #4403
- [4.x] Fix closing already closed resource regression by @IonBazan in #4402
- [BUG] : Queued exports drop root-level concerns by @imhayatunnabi in #4329
- Fix type issues by @AJenbo in #4408
- Fix/append query after chunk timing regression by @AJenbo in #4409
- [4.x] Fix remaining missing types, use readonly by @IonBazan in #4410
- [4.x] Fix: FromScout does not close the sheet by @IonBazan in #4413
- [4.x] Make
OnEachRowextendImportby @IonBazan in #4412 - [4.x] extensible export source handler registry by @IonBazan in #4414
- [4.x] Add column definitions for exports and imports by @patrickbrouwers in #4416
New Contributors
- @IonBazan made their first contribution in #4302
- @GNfsys made their first contribution in #4333
- @amooij made their first contribution in #4334
- @dazza-dev made their first contribution in #4341
- @AJenbo made their first contribution in #4343
- @billypoke made their first contribution in #4347
- @stllmtbrt made their first contribution in #4369
- @RenautMestdagh made their first contribution in #4372
- @maks-oleksyuk made their first contribution in #4383
- @markwalet made their first contribution in #4382
- @eramitgupta made their first contribution in #4399
- @allanmcarvalho made their first contribution in #4406
Full Changelog: 3.1.70...4.0.0
Release notes
Open source →See UPGRADE-4.x.md for the full upgrade guide.
Added
WithColumnsconcern, describing a sheet as a list of typed column objects rather than raw arrays. ShipsText,Number,Decimal,Percentage,Price,Date,DateTime,Boolean,Formula,RichText,Hyperlink,ImageandEmptyCell, each handling its own data type, number format, styling, sizing, filtering and comments on write, and its own casting on readFromScoutexport concern, replacing Scout builder support inFromQuery(#4390)ShouldBatchmarker interface to dispatch queued exports and chunked queued imports as job batches (#4341)- Support for Laravel's
#[Queue]and#[Connection]attributes on imports (#4382)
Changed
- Requires PHP 8.3+ and Laravel 12+ (#4361)
- Upgraded
phpoffice/phpspreadsheetfrom^1.30to^5.3(#4302, #4333) - Native parameter and return types across the entire code base; static analysis at PHPStan level 6 (#4371 and others)
Removed
- Support for PHP below 8.3 and Laravel below 12 (#4361)
- Scout
Buildersupport inFromQuery, useFromScoutinstead (#4390) ext-jsonrequirement (#4383)
-
3.1.7013 Aug 2026Release notes
Open source →What's Changed
- Upgrade GitHub Actions versions in run-tests.yml by @Daniel-H123 in #4363
- Handle concurrent temporary directory creation by @cosmastech in #4368
- fix comment indentation in Cell Middleware config being 1 space off by @andrempiva in #4380
- Update composer.json - Patch for CVE-2026-34084 by @marventhieme in #4387
- fix: change the laravel version in the docs by @JoaoJesus1337 in #4394
New Contributors
- @Daniel-H123 made their first contribution in #4363
- @andrempiva made their first contribution in #4380
- @marventhieme made their first contribution in #4387
- @JoaoJesus1337 made their first contribution in #4394
Full Changelog: 3.1.69...3.1.70
-
3.1.6930 Apr 2026Release notes
Open source →What's Changed
- Update minimum phpspreadsheet version to 1.30.4 (CVE-2026-40296) by @gabrielrbarbosa in #4355
New Contributors
- @gabrielrbarbosa made their first contribution in #4355
Full Changelog: 3.1.68...3.1.69
-
3.1.6817 Mar 2026Release notes
Open source →What's Changed
- Fix: correct Laravel version range from 11.x to 12.x in compatibility by @ZakAmirou in #4325
- chore: edited the Run tests badge by @Olexandr88 in #4321
- docs: edited the MIT license link by @Olexandr88 in #4327
- Add PHP 8.5 to test matrix in CI workflow by @alexbowers in #4332
- Fix TSV processing, queued export crashes, and interface parameter consistency by @imhayatunnabi in #4330
- feat: Update composer.json for Laravel 13 support by @chinmaypurav in #4348
New Contributors
- @ZakAmirou made their first contribution in #4325
- @Olexandr88 made their first contribution in #4321
- @imhayatunnabi made their first contribution in #4330
- @chinmaypurav made their first contribution in #4348
Full Changelog: 3.1.67...3.1.68
-
3.1.6726 Aug 2025 -
3.1.6607 Aug 2025Release notes
Open source →What's Changed
- fix: missing InteractsWithQueue trait in QueueExport class by @KhoaDuongUQ in #4314
- Bugfix stream_copy_to_stream() by @jobjen02 in #4306
- fix: preserve RemoteTemporaryFile type when working with remote storage by @hschimpf in #4290
New Contributors
- @KhoaDuongUQ made their first contribution in #4314
- @jobjen02 made their first contribution in #4306
- @hschimpf made their first contribution in #4290
Full Changelog: 3.1.65...3.1.66
-
3.1.6529 Jul 2025Release notes
Open source →What's Changed
- Include end row in
LimitFilterby @jivanf in #4278 - Support
SkipsOnErrorwithOnEachRowby @stevebauman in #4303
New Contributors
- @stevebauman made their first contribution in #4303
Full Changelog: 3.1.64...3.1.65
- Include end row in
-
3.1.6424 Feb 2025Release notes
Open source →What's Changed
- Revert "Exclude heading row when limiting imported rows" by @patrickbrouwers in #4272
Full Changelog: 3.1.63...3.1.64
-
3.1.6319 Feb 2025Release notes
Open source →What's Changed
- Update phpspreadsheet to 1.29.8 to tackle CVE issue by @brdv in #4264
- Support for Laravel 12 by @pascalbaljet in #4269
- Avoid calling query() twice by adding a local var, fixes #4133 and #4140 by @Synchro in #4221
- Exclude heading row when limiting imported rows by @jivanf in #4217
- Format rule for required_without by @rust17 in #4196
New Contributors
- @brdv made their first contribution in #4264
- @pascalbaljet made their first contribution in #4269
- @Synchro made their first contribution in #4221
- @jivanf made their first contribution in #4217
- @rust17 made their first contribution in #4196
Full Changelog: 3.1.62...3.1.63
-
3.1.6204 Jan 2025Nothing published for this version
-
3.1.6125 Nov 2024Nothing published for this version
-
3.1.6011 Nov 2024Nothing published for this version
-
3.1.5925 Oct 2024Nothing published for this version
-
3.1.5807 Sep 2024Nothing published for this version
-
3.1.5704 Sep 2024Nothing published for this version
-
3.1.5619 Aug 2024Nothing published for this version
-
3.1.5520 Feb 2024Nothing published for this version
-
3.1.5419 Feb 2024Nothing published for this version
-
3.1.5305 Feb 2024Nothing published for this version
-
3.1.5216 Jan 2024Nothing published for this version
-
3.1.5108 Dec 2023Nothing published for this version
-
3.1.5006 Nov 2023Nothing published for this version
-
3.1.4926 Oct 2023Nothing published for this version
-
3.1.4822 Feb 2023Nothing published for this version
-
3.1.4716 Feb 2023Release notes
Open source →- Support Laravel 10
Fixed
- Fix Bug Multiple drawings change the behavior of the startCell (#3865).
- Allow configuring read data only in chunks as well.
-
3.1.4626 Jan 2023 -
3.1.4502 Jan 2023Release notes
Open source →Added
- Add support for ignoring PHP auto_detect_line_endings INI directive
Fixed
- Fix the PSR simple cache dependency mess to maintain backwards compatibility and support 3.0 of the interface.
-
3.1.4414 Oct 2022Release notes
Open source →Fixed
- Fix output of
WithFormatDatain combination withSkipsEmptyRows(#3760)
Changed
- Cast empty headings to indexed integer (#3646)
- Adds
isEmptyWhento customize is row empty logic. (#3645)
Fixed
- Fix temporary local files not being cleaned up when setting force_resync_remote config to true (#3623)
- Fix testing for multiple stored files by regex matching (#3631).
- Allow
required_unlessrule (#3660)
- Fix output of
-
3.1.4303 Oct 2022Nothing published for this version
-
3.1.4228 Sep 2022Nothing published for this version
-
3.1.4126 Sep 2022Nothing published for this version
-
3.1.4002 May 2022Release notes
Open source →- Fix testing for multiple stored files by regex matching (#3631).
Changed
- Adds
WithDefaultStylesconcern to allow configuring the workbook default styles. - Adds
WithBackgroundColorconcern to allow configuring the workbook default background color. - Expose the ability to set custom response headers when exporting collections via Exportable
-
3.1.3923 Apr 2022 -
3.1.3824 Mar 2022Release notes
Open source →Changed
- Adds concern
WithGroupedHeadingRowto allow imported sheets to group the values of columns with the same header in an array
Fixed
- Fix for
prepareForValidationcallback not being called when usingSkipsEmptyRows
- Adds concern
-
3.1.3728 Feb 2022Release notes
Open source →Fixed
- Add
@mixindocblock to all macroable classes to allow for IDE autocompletion of delegate classes - Fix issue with
Excel::toArraynot allowing nullable reader types for uploaded files
Changed
- Change default Csv Import to auto-detect the delimiter when not explicitly defined
- Add
-
3.1.3627 Jan 2022Release notes
Open source →Fixed
- Fix return type of
FromQuery::query()
Changed
- Support Laravel 9
- Added a config setting to specify DB connection
- Added a config setting to specify CSV output encoding
- Added an ability to specify CSV output encoding through csvSettings
- Fix return type of
-
3.1.3504 Jan 2022Release notes
Open source →Fixed
- Removed cache flush for cell caching as this is already handled by PhpSpreadsheet
- Fix
SkipsEmptyRowssupport with theWithColumnLimitconcern - Added range support to FormatColumn
-
3.1.3402 Dec 2021Release notes
Open source →Changed
- Change default local_path configuration
- Fix queueImport function to be able to assert chained jobs
- Skipped failure no longer persists in
ToCollectionandToArray. - Fix missing InteractsWithQueue trait in AppendToSheet jobs
- Add return types to
Row'sArrayAccessimplementation
-
3.1.3312 Aug 2021Release notes
Open source →Fixed
- Make TransactionManager a singleton (#3270)
- Fix Exportable disk options (#3296)
- Delete temporary file after exception in import class (#3312)
-
3.1.3208 Jul 2021Release notes
Open source →Added
- Add assertExportedInRaw assertion (#3255)
Fixed
- Make commands detect model directory now (#3213)
-
3.1.3102 Jun 2021Release notes
Open source →Added
- Custom heading row formatter can use column index (#3166)
- Added WithFormatData concern (#3154)
Fixed
- Create failures of rows than didn't exist but where requested in row validation
- Fix Bug Formulas are not calculated when import implements WithCalculatedFormulas with SkipsEmptyRows #3127
- PhpSpreadsheet 1.18 support
-
3.1.3006 Apr 2021 -
3.1.2916 Mar 2021 -
3.1.2810 Mar 2021Release notes
Open source →Added
- Added WithUpsertColumns concern (#3046)
- Added ShouldQueueWithoutChain concern (#3072)
Fixed
- Limit Phpspreadsheet version to 1.16 until bugfix release
- Fixed issue with not autosizing columns (#3055)
- Fix selecting worksheets by name with chunk reading (#3052)
-
3.1.2722 Feb 2021Release notes
Open source →Added
- Added SkipsEmptyRows concern
- Added HasReferencesToOtherSheets concern to allow import of calculated
Changed
- Bump minimum PhpSpreadsheet version
- Progressbar NullOutput as fallback
-
3.1.2627 Nov 2020 -
3.1.2513 Nov 2020Release notes
Open source →Added
- Added an ability to prepare rows before appending rows to sheet. Just add
prepareRowsmethod for your export class if needed. - Added an ability to catch exceptions from
QueueExportjob. Just addfailedmethod for your export class if needed. - Added an ability to set locale for queued export. Just implement
Illuminate\Contracts\Translation\HasLocalePreferencefor your export. - Added
JsonSerializablesupport inMaatwebsite\Excel\Validators\Failure. - Added
$maxExceptionssupport inMaatwebsite\Excel\Jobs\ReadChunk.php. - Added support to upsert models by implementing the
WithUpsertsconcern.
- Added an ability to prepare rows before appending rows to sheet. Just add
-
3.1.2428 Oct 2020Release notes
Open source →Added
- Added support for
prepareForValidationonWithValidationconcern - Added support for
withValidatoronWithValidationconcern - Added
ArrayAccesstoRow
Fixed
- Corrected SkipsErrors doc block
- Added support for
-
3.1.2329 Sep 2020Release notes
Open source →Added
- Added
ignore_emptysetting toconfig/excel.php - Added
strict_null_comparisonsetting toconfig/excel.php
- Added
-
3.1.2208 Sep 2020 -
3.1.2106 Aug 2020Release notes
Open source →Added
- Added WithProperties concern
- Added default spreadsheet properties config
- Added WithColumnWidths concern
- Added WithStyles concern.
- Config setting to configure cell caching
Changed
- Sheet titles longer than 31 chars get trimmed.
- Sheet titles with unsupported chars get cleaned.
Fixed
- Fixed issue with using ShouldAutosize in combination with FromView column widths.
-
3.1.2017 Jul 2020Release notes
Open source →Added
- Re-sycing remote temporary file
- Remember row number
- Remember chunk offset
- WithColumnLimit concern
- WithReadFilter concern
- Publishing the stubs
Changed
- Interacting with queued jobs
- Retry until and middleware on queued imports
- Using WithValidation with FromCollection & FromArray
- Read filters for WithLimit and HeadingRowImport
- Bump of minimum version PhpSpreadsheet
Fixed
- Fixed test helper docblocks on the Excel facade.
- Fix for importing with a start row beyond the highest row.
- Fixed
BeforeSheetandAfterSheetevents receiving exportable instance instead of importable when calling on an Import. - Fix for value binders not working in queued exports.
- Fix when using WithLimit concern when having less rows than the limit.
- Fix AfterImport job being fired twice if not using queueing.
- Raw() method now also available on Exportable.
- Fix for breaking changes in PhpSpreadsheet with empty enclosures.
Older release notes can be found in Github releases.
-
3.1.1928 Feb 2020Nothing published for this version
-
3.1.1824 Dec 2019Nothing published for this version
-
3.1.1704 Sep 2019Nothing published for this version
-
3.1.1603 Sep 2019Nothing published for this version
-
3.1.1516 Jul 2019Nothing published for this version
-
3.1.1419 Jun 2019Nothing published for this version
-
3.1.1308 May 2019Nothing published for this version