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
Simple Excel

Simple Excel Laravel Package

spatie/simple-excel

Lightweight reader/writer for simple CSV and XLSX files in PHP/Laravel. Uses generators and LazyCollection for low memory usage on large files. Quickly stream rows for processing or export data without loading entire spreadsheets into memory.

View on GitHub
Deep Wiki
Context7

Read and write simple Excel and CSV files

Frequently asked questions about Simple Excel
How does spatie/simple-excel handle memory usage for large Excel/CSV files?
The package uses generators and Laravel’s `LazyCollection` to stream rows one at a time, avoiding loading entire files into memory. This makes it ideal for files with millions of rows, as only the current row is processed at any given time. Always use `getRows()` for large files to ensure low memory consumption.
Can I use this package to read and write both CSV and XLSX files with the same API?
Yes, the package automatically detects the file type based on the extension (`.csv` or `.xlsx`). You can use the same methods like `SimpleExcelReader::create()` or `SimpleExcelWriter::create()` for both formats, simplifying your codebase.
What Laravel versions does spatie/simple-excel support?
The package supports Laravel 8.x, 9.x, and 10.x. Check the [GitHub repository](https://github.com/spatie/simple-excel) for the latest compatibility details, as minor updates may add or drop support for specific Laravel versions.
How do I validate or sanitize uploaded Excel/CSV files before processing?
Use Laravel’s built-in validation (e.g., `Validator::make()`) to check file types, sizes, and MIME types before processing. For example, verify the file is a valid CSV/XLSX using `mime_type('text/csv')` or `mime_type('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')`. Always validate user-uploaded files to prevent errors or security risks.
Is there a way to process Excel files asynchronously for better performance?
Yes, you can wrap the processing logic in a Laravel job and dispatch it to a queue. For example, create a job that uses `SimpleExcelReader::create()->chunk(1000)->process()` to handle large files in batches. This avoids timeouts and improves scalability for long-running imports.
Does spatie/simple-excel support complex Excel features like formulas, charts, or multi-sheet files?
No, this package is designed for simple tabular data (e.g., row-by-row processing). For advanced Excel features like formulas, charts, or multi-sheet files, consider using `phpoffice/phpspreadsheet` directly, as it provides full Excel manipulation capabilities.
How do I handle malformed or corrupted Excel/CSV files during parsing?
The package will throw exceptions for corrupted files, but you can catch them and handle errors gracefully. For example, wrap the parsing logic in a try-catch block and log errors or notify admins. For CSV files, ensure the dialect (e.g., delimiter, enclosure) matches your data to avoid parsing issues.
Can I integrate spatie/simple-excel with Laravel’s file storage (e.g., S3, local disk)?
Yes, the package works seamlessly with Laravel’s `Storage` facade. Pass the file path as a string (e.g., `storage_path('file.xlsx')` or `'s3://bucket/file.csv'`) to `SimpleExcelReader::create()`. The underlying libraries handle the file I/O, so no additional setup is required.
What are the performance implications of processing millions of rows with this package?
For millions of rows, use chunking (e.g., `->chunk(5000)`) to process data in batches and avoid memory issues. For write operations, consider streaming rows directly to a database using bulk inserts or Laravel queues. Test with your expected file size to ensure optimal performance.
Are there alternatives to spatie/simple-excel for CSV-only or advanced Excel needs?
For CSV-only needs, `league/csv` is a lightweight alternative without abstraction overhead. For advanced Excel features (e.g., formulas, multi-sheet files), use `phpoffice/phpspreadsheet` directly. However, `spatie/simple-excel` provides a cleaner API for basic read/write operations in Laravel.
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.
davejamesmiller/laravel-breadcrumbs
artisanry/parsedown
christhompsontldr/phpsdk
enqueue/dsn
bunny/bunny
enqueue/test
enqueue/null
enqueue/amqp-tools
milesj/emojibase
bower-asset/punycode
bower-asset/inputmask
bower-asset/jquery
bower-asset/yii2-pjax
laravel/nova
spatie/laravel-mailcoach
spatie/laravel-superseeder
laravel/liferaft
nst/json-test-suite
danielmiessler/sec-lists
jackalope/jackalope-transport