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
Phpspreadsheet

Phpspreadsheet Laravel Package

phpoffice/phpspreadsheet

PhpSpreadsheet is a pure-PHP library to read and write spreadsheet files (Excel, LibreOffice Calc, and more). Create, modify, and export workbooks with rich formatting, formulas, and multiple formats via a well-documented API.

View on GitHub
Deep Wiki
Context7

A pure PHP library for reading and writing spreadsheet files

Frequently asked questions about Phpspreadsheet
How do I install PhpSpreadsheet in a Laravel 10 project?
Run `composer require phpoffice/phpspreadsheet` in your project directory. No additional Laravel-specific setup is required, though you may need to configure PHP’s memory limit for large files (e.g., `ini_set('memory_limit', '512M')`). The package adheres to PSR-4 autoloading, so it integrates seamlessly with Laravel’s Composer-based dependency system.
Can PhpSpreadsheet handle large Excel files (e.g., 50K+ rows) in Laravel without crashing?
For large files, use chunked processing or lazy loading via `setMemoryCacheSize()` to reduce memory usage. Pair with Laravel queues (e.g., `ShouldQueue` jobs) to offload processing. Monitor memory with `memory_get_usage()` and implement fallbacks like CSV for unsupported features. Default PHP memory limits (128MB) may need adjustment for extreme cases.
How do I generate an Excel download in Laravel using PhpSpreadsheet?
Use Laravel’s `Response` facade with `streamDownload()` to send the file directly to the browser. Example: `return response()->streamDownload(fn() => $writer->save('php://output'), 'report.xlsx');`. For large files, stream the output incrementally to avoid memory overload. Combine with Laravel’s Storage facade for file generation before streaming.
Does PhpSpreadsheet support Laravel’s Eloquent for importing spreadsheet data into a database?
Yes, but manually. Load the spreadsheet with `IOFactory::load($filePath)`, iterate through cells, and map data to Eloquent models or raw queries (e.g., `DB::table('users')->insert($data)`). For bulk operations, use Laravel’s queue system to process rows in batches. No native Eloquent integration exists, so custom logic is required for model validation and relationships.
What Laravel versions and PHP versions does PhpSpreadsheet officially support?
PhpSpreadsheet requires PHP 8.1+ (LTS until June 2026) and aligns with Laravel 10+ (PHP 8.1+) and Laravel 9 (PHP 8.0 with a compatibility layer). Avoid PHP 8.0 for new projects, as support ends November 2023. Check the [PHP.net support page](https://www.php.net/supported-versions.php) for long-term planning. Laravel 8.x (PHP 7.4) is unsupported.
How do I handle Excel formulas (e.g., VLOOKUP, SUMIF) in PhpSpreadsheet for Laravel exports?
Use PhpSpreadsheet’s `Formula` class to write formulas (e.g., `$spreadsheet->setCellValue('A1', '=SUM(B1:B10)')`). For complex formulas, validate inputs to avoid errors. Array formulas or volatile functions (e.g., `TODAY()`) may require custom handling. Test edge cases like circular references or unsupported functions in your Laravel test suite (Pest/PHPUnit).
Are there performance optimizations for reading/writing spreadsheets in Laravel?
Enable cell caching with `setReadDataOnly(true)` for read-heavy operations, or use `setMemoryCacheSize()` to limit memory. For writes, batch operations (e.g., `fromArray()`) reduce overhead. Stream responses for downloads to avoid loading entire files into memory. Pair with Laravel’s queue system for async processing of large files (e.g., `dispatch(new ExportJob($file))`).
How do I validate uploaded Excel files in Laravel before processing?
Use PhpSpreadsheet’s `IOFactory::load()` to detect file types and validate structure (e.g., check for required sheets or columns). Combine with Laravel’s validation rules (e.g., `Validator::make()`) for business logic. For security, sanitize cell data to prevent formula injection or malicious content. Log errors for invalid files and provide user feedback via Laravel’s notification system.
What are the alternatives to PhpSpreadsheet for Laravel spreadsheet handling?
Alternatives include **Box/Spout** (lightweight, CSV/XLSX, but less feature-rich) and **Laravel Excel** (a wrapper for Maatwebsite/Excel, which uses PhpSpreadsheet under the hood). For pure PHP, **PhpOffice/PhpSpreadsheet** is the most comprehensive, but **League/Csv** is an option for CSV-only needs. Evaluate based on your needs: PhpSpreadsheet excels in formatting/formulas, while Spout prioritizes speed for large datasets.
How do I maintain PhpSpreadsheet in a Laravel project with frequent updates?
Monitor the [GitHub releases](https://github.com/PHPOffice/PhpSpreadsheet/releases) for breaking changes, especially in minor versions (e.g., 1.20.x). Use `composer update phpoffice/phpspreadsheet --with-dependencies` cautiously in staging. Test critical workflows (e.g., exports/imports) with each update. For long-term projects, pin to a specific minor version (e.g., `^1.20.0`) in `composer.json` to avoid surprises.
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.
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
develia/geo-bundle
dreamzy/livewire-charts
touchestate-sdk/php-sdk
ecotone/kafka
22h/doctrine-garbage-collection-bundle
agtp/agtp-php
agtp/mod-php
splash/sonata-admin
splash/metadata