Weave 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
Spout Bundle

Spout Bundle Laravel Package

stev/spout-bundle

A PHP bundle wrapping the Spout spreadsheet library, giving your app a simple service for importing and exporting XLSX, ODS, and CSV files. Handy for reading and writing spreadsheets without heavy dependencies or extension requirements.

View on GitHub
Deep Wiki
Context7

stev/spout-bundle is a lightweight Symfony bundle that wires the Box/Spout spreadsheet library into your application's service container. It gives you ready-to-use, autowirable services for reading and writing XLSX, CSV, and ODS files, so you can import and export tabular data without the overhead of heavier alternatives such as PhpSpreadsheet.

  • Pre-configured Reader and Writer services for each supported format
  • Streaming, low-memory processing suitable for large files
  • Bundle configuration for default formats, encodings, and options
  • Seamless Symfony DI integration with autowiring support
  • Minimal footprint—no extra dependencies beyond Box/Spout itself
Frequently asked questions about Spout Bundle
Can I install stev/spout-bundle in a Laravel application?
No, not as a working integration layer. The package is a Symfony bundle built for Symfony 4 and 5, so it relies on bundle registration and Symfony dependency injection service definitions that Laravel does not provide. Laravel has no bundle bootstrap, which means the package's main integration surface is unusable without a custom port. If you need the underlying spreadsheet capability, depend on a maintained library directly and wrap it in a Laravel service provider.
What does stev/spout-bundle actually do?
It integrates the box/spout spreadsheet library into Symfony by registering Spout's readers and writers as container services. That lets Symfony applications import and export XLSX, CSV and ODS files using Spout's streaming API, which keeps memory usage low on large files. All of the actual file handling comes from Spout itself, not from the bundle, so the bundle adds configuration convenience rather than new spreadsheet behaviour.
Which Laravel and PHP versions does stev/spout-bundle support?
There is no declared Laravel support at all, because the package targets Symfony 4 and 5. Its last release was on 2020-09-10, so any PHP compatibility ceiling reflects the ecosystem of that period rather than current PHP or Laravel releases. You would be responsible for verifying and patching compatibility yourself.
Is stev/spout-bundle still maintained?
Effectively no. The last release was 2020-09-10, and the repository shows zero stars and zero dependents, which means no community validation and no downstream pressure to keep it compatible with modern PHP or Laravel. If you adopted it, your team would own compatibility patches, security review and any porting work. Using a maintained spreadsheet library directly is the lower-risk option.
What licence does stev/spout-bundle use and is it a problem for commercial Laravel apps?
The package is distributed under GPL-3.0, which is a significant concern for proprietary or commercially distributed Laravel applications. GPL-3.0 carries copyleft obligations that many product teams are unwilling to accept in a closed-source codebase. Review this with your legal team before adding the dependency, and note that permissively licensed alternatives exist.
What is the best Laravel alternative for Excel and CSV import/export?
For Laravel-native features such as facades, import and export classes and queued chunk reading, maatwebsite/excel is the common choice. If you only need fast streaming reads and writes with low memory use, openspout/openspout is the maintained continuation of the Spout library this bundle wraps. Either option can sit behind your own adapter interface bound in a service provider, which keeps spreadsheet concerns out of your application code.
Does stev/spout-bundle handle very large spreadsheet files without running out of memory?
The streaming design comes from the underlying Spout library, which reads and writes row by row rather than loading a whole workbook into memory. The bundle itself adds no scaling guarantees, no queueing and no resource management on top of that. In Laravel you still need to handle queue workers, timeouts, memory limits, temporary storage and concurrent export generation explicitly.
Can I use box/spout directly in Laravel instead of this bundle?
Yes, and that is preferable to pulling in the Symfony bundle. Bind a thin internal adapter around the library in a Laravel service provider and call that adapter from your import and export code. Be aware that box/spout v3 is an older major version, and the maintained successor is openspout/openspout, so start there unless legacy constraints force v3.
How do I migrate from stev/spout-bundle concepts to a Laravel integration?
Start by inventorying your spreadsheet use cases: file formats, file sizes, formulas, styling, streaming needs and whether processing is queued or synchronous. Prototype the same cases with openspout/openspout or Laravel Excel and compare behaviour against real fixtures. Then introduce an internal SpreadsheetService interface bound via a service provider, move call sites onto it, and remove the bundle dependency. Keep Symfony bundle concepts such as container service definitions out of your application code entirely.
What are the main risks of treating stev/spout-bundle as a quick win?
The main risk is sequencing: adopting an unmaintained 2020 Symfony bundle looks fast but transfers maintenance, security review and porting work onto your team. Its Symfony container assumptions break under Laravel, and its GPL-3.0 licence may conflict with your distribution model. Budget time for a small application-owned adapter and regression tests around real spreadsheet fixtures instead.
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.
jinas/dhivatar
store-doc/laravel-storage-driver
plus-it/laravel-translation-manager
diephp/perhaps
diephp/telegraph
osmaviation/spreadsheet
microsoft/fluentui-system-icons
mmccook/php-json-canonicalization-scheme
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
cgv/localized-resource