信息发布→ 登录 注册 退出

laravel如何导出数据到Excel或CSV文件_Laravel导出Excel与CSV文件方法

发布时间:2025-10-03

点击量:
最常用方式是使用maatwebsite/excel包。1. 通过Composer安装并配置服务提供者和门面;2. 使用Artisan命令创建导出类,如UsersExport,并编写数据导出逻辑。

在 Laravel 中导出数据到 Excel 或 CSV 文件,最常用的方式是结合 maatwebsite/excel 这个第三方包。它功能强大、使用简单,支持从数据库快速导出数据,并可自定义格式、样式和文件类型(包括 XLSX、CSV 等)。

1. 安装 Laravel Excel 包

使用 Composer 安装 maatwebsite/excel

composer require maatwebsite/excel

安装完成后,Laravel 6+ 版本通常会自动注册服务提供者,低版本可能需要手动添加:

config/app.php 中加入:

'providers' => [ Maatwebsite\Excel\ExcelServiceProvider::class, ], 'aliases' => [ 'Excel' => Maatwebsite\Excel\Facades\Excel::class, ],

2. 创建导出类

使用 Artisan 命令生成一个导出类:

php artisan make:export UsersExport --model=User

这会在 app/Exports 目录下创建 UsersExport.php 文件。编辑该文件:

get(); } public function headings(): array { return ['ID', '姓名', '邮箱', '创建时间']; } }

这个类实现了 FromCollection 接口来提供数据,WithHeadings 添加表头。

3. 在控制器中调用导出

创建一个控制器方法来处理导出请求:

ExportController extends Controller { public function export() { return Excel::download(new UsersExport, 'users.xlsx'); } // 导出为 CSV public function exportCsv() { return Excel::download(new UsersExport, 'users.csv'); } }

然后在路由中注册:

Route::get('/export/users', [ExportController::class, 'export']); Route::get('/export/users/csv', [ExportController::class, 'exportCsv']);

4. 可选:自定义导出格式与性能优化

对于大数据量,建议使用 FromQuery 替代 FromCollection,避免内存溢出:

use Maatwebsite\Excel\Concerns\FromQuery; public function query() { return User::query()->select('id', 'name', 'email', 'created_at'); }

还可以实现 WithMapping 来格式化字段:

use Maatwebsite\Excel\Concerns\WithMapping; public function map($user): array { return [ $user->id, $user->name, $user->email, \Carbon\Carbon::parse($user->created_at)->format('Y-m-d'), ]; }

基本上就这些。通过 Laravel Excel,你可以轻松实现数据库数据导出为 Excel 或 CSV,支持灵活定制字段、标题、格式和文件类型,适合各种后台管理系统的报表导出需求。

标签:# 数据库  # 这会  # 方法来  # 第三方  # 并可  # 可选  # 管理系统  # 你可以  # 还可以  # 最常用  # 自定义  # php  # class  # require  # csv文件  # csv  # app  # cad  # composer  # laravel  # excel  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!