laravel-excel 导出核心是选对版本并规范导出逻辑:先按 laravel/php 版本安装 maatwebsite/excel 3.x 或 4.x,再用 fromquery+lazy 处理大数据、headings 定义中文列头、map 格式化时间,避免内存溢出与乱码。
用 Laravel-Excel 导出 Excel 表格,核心就两步:装对包、写对导出逻辑。但很多人卡在版本兼容、队列配置或中文乱码上,不是插件不行,是没踩准 Laravel 版本和 PHP 环境的配合点。
确认 Laravel 和 PHP 版本再装包
maatwebsite/excel 从 3.x 升到 4.x 后不再支持 Laravel 8 以下版本,而 4.x 又要求 PHP ≥ 8.0。如果你用的是 Laravel 9 + PHP 8.1,直接运行:
composer require maatwebsite/excel
但如果项目还在 Laravel 7 或 PHP 7.4,必须锁版本:
composer require maatwebsite/excel:^3.1- 同时确保已安装
phpoffice/phpspreadsheet(3.x 会自动带,4.x 已剥离为独立依赖) - 别忘了在
config/app.php的providers数组里加Maatwebsite\Excel\ExcelServiceProvider::class(Laravel 5.5+ 可省略,但 6/7 仍需手动注册)
导出数据时别直接传 Eloquent 集合给 FromCollection
常见错误是把 User::all() 塞进 FromCollection 实现类,结果内存爆掉或中文字段名乱码。正确做法是: