os/excel-bundle
OS Excel Bundle integrates PHPExcel with Symfony to simplify reading, writing, and exporting Excel spreadsheets. Generate reports, stream downloads, and handle common spreadsheet formats from controllers and services with minimal configuration and boilerplate.
maatwebsite/excel on Laravel). Framing the decision this way keeps the conversation about capability, not about a specific 11-star repo.Framing correction worth flagging up front: despite being requested as a "Laravel/PHP package," this is a Symfony 2 bundle, and it wraps PHPExcel, which was archived in 2019 in favour of PhpSpreadsheet. It is not a Laravel fit and should not be evaluated as one.
Consider it only when all of the following hold:
Look elsewhere when any of these are true:
maatwebsite/excel on Laravel.To executives — one line: Excel import/export is table stakes for our B2B and finance customers, but this specific package is built for an end-of-life Symfony version and wraps a library that was retired in 2019; we should deliver the capability with a maintained library and keep it behind an internal interface so it can be swapped without a rewrite.
To executives — the decision: We are choosing how to de-risk spreadsheet handling, not whether to ship it. Adopting this bundle looks cheap today (an existing Symfony2 app can wire it up in hours) but converts into upgrade debt the moment we move off Symfony 2 or onto a supported PHP version. The alternative costs a few days of engineering now and removes an unmaintained dependency from our supply chain. For a capability that touches customer data and finance reporting, the maintained option is the cheaper one on any horizon longer than one release.
To engineering — the framing: Adopt the capability, not the package. Define a narrow port in the domain layer — SpreadsheetReader / SpreadsheetWriter — and implement it behind PhpSpreadsheet (or Laravel Excel where relevant). The Symfony2 bundle can be a stopgap implementation of that port if we are already on PHPExcel, which keeps the migration to a single adapter swap rather than a scattered refactor.
Red flags to state plainly in the decision record: 11 stars, 0 dependents, an EOL framework target, and a deprecated underlying library. Low adoption is not disqualifying on its own, but combined with zero dependents it means nobody else is exercising this code in production — we would be the test suite. Score it as low opportunity, high replacement risk: worth naming as an option in a legacy-context build-vs-buy comparison, not worth adopting as a new dependency. If we do adopt it, record an explicit expiry date and an owner for the migration.
How can I help you explore Laravel packages today?