Laravel导出Excel文件:求推荐支持模板的最佳类库
问对了!在Laravel生态里做带模板的Excel导出,Maatwebsite/Laravel-Excel绝对是首选——这玩意儿我在大大小小十几个项目里都用过,处理模板导出的需求简直得心应手,社区活跃度和文档完善度都拉满。
首选:Maatwebsite/Laravel-Excel
- 核心亮点:完全贴合Laravel的开发习惯,支持XLSX、CSV、ODS等几乎所有主流Excel格式,模板导出是它的核心功能之一,能轻松实现固定表头、合并单元格、预定义样式这类复杂需求,不用从零开始写样式代码。
- 模板导出快速上手示例:
- 先准备好你的Excel模板(比如
user_template.xlsx),可以提前设置好表头样式、合并单元格等,把它放到storage/app/templates目录下。 - 创建导出类,实现
WithTemplate和FromView接口:
namespace App\Exports; use Maatwebsite\Excel\Concerns\FromView; use Maatwebsite\Excel\Concerns\WithTemplate; use Illuminate\Contracts\View\View; class UserListExport implements WithTemplate, FromView { private $users; // 注入要导出的数据 public function __construct($users) { $this->users = $users; } // 指定模板文件路径 public function template(): string { return storage_path('app/templates/user_template.xlsx'); } // 绑定数据到视图(视图里的变量会自动填充到模板对应位置) public function view(): View { return view('exports.user_list', [ 'users' => $this->users, 'exportDate' => now()->format('Y-m-d') ]); } }- 在控制器里调用导出:
use App\Exports\UserListExport; use Maatwebsite\Excel\Facades\Excel; use App\Models\User; public function exportUsers() { $userData = User::select('id', 'name', 'email')->get(); return Excel::download(new UserListExport($userData), 'user_list_' . date('Ymd') . '.xlsx'); } - 先准备好你的Excel模板(比如
- 额外优势:支持队列导出(处理十万级以上数据不卡主线程)、自定义单元格样式、数据格式化,甚至连Excel导入功能也一并支持,相当于一套工具搞定Excel的读写需求。
备选方案:直接基于PhpSpreadsheet封装
如果你的项目需求特别轻量化,不想引入完整的Laravel-Excel包,也可以直接用它的底层依赖PhpSpreadsheet自己封装模板导出逻辑。不过这种方式需要自己处理Laravel的集成细节,适合有一定PhpSpreadsheet使用经验的开发者,毕竟Laravel-Excel已经帮我们省了很多重复工作。
内容的提问来源于stack exchange,提问作者Lucentyr
相关产品推荐
相关产品推荐

