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

Fast Excel Laravel Package

rap2hpoutre/fast-excel

Fast, memory-efficient Excel/CSV/ODS import/export for Laravel using Spout. Export Eloquent models or collections to XLSX/CSV/ODS with custom column mapping, and download from controllers. Import files to collections, configure CSV options, or transform rows into DB inserts.

View on GitHub
Deep Wiki
Context7

🦉 Fast Excel import/export for Laravel

Frequently asked questions about Fast Excel
How does FastExcel compare to Laravel Excel or PhpSpreadsheet in terms of speed and memory usage?
FastExcel uses Spout v3 for streaming I/O, handling 1M+ rows with just 2MB memory peak, while Laravel Excel or PhpSpreadsheet can consume 100MB+ for large exports. Benchmarks show FastExcel is 5–10x faster for bulk operations, making it ideal for high-volume exports like financial reports or user activity logs.
Can I use FastExcel to export Eloquent models directly to Excel without writing extra code?
Yes. FastExcel integrates natively with Eloquent. Simply pass a model collection or query to the constructor, e.g., `(new FastExcel(User::all()))->export('users.xlsx')`, and it auto-maps columns. For custom fields, use the closure callback to define column names and transformations.
Does FastExcel support CSV imports with custom delimiters, encodings, or enclosures?
Absolutely. Use `configureCsv()` to set delimiters (e.g., semicolons), enclosures (e.g., `#`), or encodings (e.g., `gbk`). Example: `$fastExcel->configureCsv(';', '#', 'gbk')->import('file.csv')`. This is critical for localized or legacy CSV formats.
How do I trigger a file download from a Laravel controller using FastExcel?
Call the `download()` method directly in your controller. Example: `return (new FastExcel(User::all()))->download('users.xlsx');`. This leverages Laravel’s response system, so it works seamlessly with API routes, web downloads, or queued jobs when combined with Laravel Queues.
Will FastExcel work with Laravel 9+ and PHP 8+ only? What if I’m on an older stack?
FastExcel requires PHP 8+ and Laravel 9+ due to Spout v3 dependencies. If you’re on PHP 7.x or Laravel 8, you’ll need to upgrade or consider alternatives like Laravel Excel (which supports older versions). The tradeoff is worth it for the performance gains if you can migrate.
Can I import an Excel file and directly insert rows into my database?
Yes. Use the `import()` method with a closure to transform each row into a database record. Example: `$users = (new FastExcel)->import('users.xlsx', function ($line) { return User::create($line); });`. This is perfect for bulk seeding or ETL workflows.
Does FastExcel support multi-sheet Excel files or advanced formatting like charts and formulas?
FastExcel focuses on single-sheet exports/imports with basic formatting (e.g., column mapping, data transformations). It lacks support for multi-sheet files, charts, or complex Excel formulas. For advanced templates, consider Laravel Excel or PhpSpreadsheet instead.
How do I handle large exports (e.g., 500K+ rows) without running into memory issues?
Use chunked exports by yielding rows in the closure. Example: `(new FastExcel())->export('large_file.xlsx', function () { yield from User::chunk(1000, function ($users) { foreach ($users as $user) { yield $user->toArray(); } }); });`. This processes data in batches, keeping memory usage low.
Are there any known compatibility issues with specific databases (e.g., PostgreSQL, MySQL) when importing data?
FastExcel is database-agnostic and works with any Eloquent-supported database (MySQL, PostgreSQL, SQLite, etc.). However, ensure your database connection is properly configured in Laravel’s `.env` file. For large imports, consider transactions or batch inserts to avoid locking issues.
What alternatives should I consider if FastExcel doesn’t meet my needs (e.g., multi-sheet support or advanced Excel features)?
For multi-sheet exports or advanced Excel features (charts, formulas, merged cells), use **Laravel Excel** (maatwebsite/excel) or **PhpSpreadsheet**. If you need high performance but lack advanced formatting, FastExcel is still a great choice. Evaluate your use case: FastExcel excels at speed/memory; alternatives offer broader Excel feature support.
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.
codraw/framework-extra-bundle
codraw/messenger
codraw/security
codraw/mailer
codraw/contracts
codraw/profiling
codraw/dependency-injection
codraw/tester
codraw/core
nexmo/api-specification
capell-app/block-library
axium/identity
cetria/laravel-dummy-models
cetria/reflection-helper
agropredict/sso-auth-bundle
evolvestudio/spam-protection
datacore/hub-sdk
develia/commons
cuci/prototurk-sdk
cuci/prototurk-sdk-symfony