最常用工具是Maatwebsite/Laravel-Excel;基于PhpSpreadsheet,支持导入导出Excel/CSV;安装命令为composer require maatwebsite/excel;Laravel 8+自动注册服务提供者和门面;旧版本需手动在config/app.php中添加ServiceProvider和Facade;通过php artisan make:export UsersExport --model=User生成导出类;导出类位于app/Exports目录。

在 Laravel 项目中导出 Excel 文件,最常用且功能强大的工具是 Maatwebsite/Laravel-Excel 插件。它是基于 PHPOffice 的 PhpSpreadsheet 开发的,支持导入、导出 Excel 和 CSV 文件,使用简单,扩展性强。
安装 Laravel Excel 插件
在 Laravel 项目根目录下运行以下命令安装:
composer require maatwebsite/excel
如果你使用的是 Laravel 8+ 且版本为 Laravel Excel 3.1+,无需手动注册服务提供者和门面,因为 Composer 安装后会自动发现(Auto-discovery)。
如果是旧版本,需手动添加:
'providers' => [
Maatwebsite\Excel\ExcelServiceProvider::class,
]
- 添加门面:
'aliases' => [
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
]
创建导出类
使用 Artisan 命令生成一个导出类:
php artisan make:export UsersExport --model=User
该命令会在 app/Exports 目录下生成 UsersExport.php 文件。如果没有此目录,请先创建。
编辑导出类,实现数据导出逻辑:
get();
}
public function headings(): array
{
return [
'ID',
'姓名',
'邮箱',
'注册时间'
];
}
}
说明:
- FromCollection:表示从 Eloquent 集合导出数据。
- WithHeadings:添加表头。
在控制器中调用导出
创建一个控制器方法来触发导出:
然后在路由中注册:
Route::get('/export-users', [UserController::class, 'export']);
访问 /export-users 即可下载 users.xlsx 文件。
支持格式与自定义文件名
默认导出为 .xlsx 格式,也支持其他格式:
-
Excel::download($export, 'file.csv')→ CSV -
Excel::download($export, 'file.xls')→ XLS -
Excel::download($export, 'file.xslx', \Maatwebsite\Excel\Excel::XLSX)→ 显式指定格式
高级功能(可选)
你还可以实现更多接口来自定义导出行为:
- ShouldAutoSize:自动调整列宽。
- WithMapping:对每行数据进行映射处理。
- WithEvents:监听导出事件,如设置标题样式等。
例如添加自动列宽:
class UsersExport implements FromCollection, WithHeadings, ShouldAutoSize
{
// ...
}
基本上就这些。Laravel Excel 插件让导出 Excel 变得非常简单,配合 Eloquent 模型能快速实现数据导出功能。按照上述步骤操作,你就能在项目中轻松实现导出功能了。










