通过免费 PHP 库导入和导出 Excel、CSV 与 ODS 文件
开源 PHP API,使软件开发者能够导入和导出 MS Excel 文件。了解其功能、优势以及代码示例,以高效处理大型数据集。
什么是 Fast-Excel?
Fast-Excel 是一个轻量级的 PHP 包,旨在简化 Laravel 应用中的 Excel 和 CSV 导入/导出操作。它基于 OpenSpout 构建,注重速度、低内存使用和开发者友好的语法。不同于更庞大的电子表格库,Fast-Excel 适合需要简单高效的电子表格处理且不希望增加不必要复杂性的项目。它支持导出和导入 XLSX、CSV 和 ODS 文件,同时保持内存消耗出乎意料地低。
Fast-Excel 对于需要处理大型 Excel、CSV 或 ODS 文件且不想受到内存限制的开发者特别有用。传统库通常会将整个数据集加载到内存中,但 Fast-Excel 使用流式技术高效处理数据。该库广泛用于将数据库记录导出为电子表格、导入用户数据或报告、动态生成大型报告、简化 Laravel 应用中的 Excel 处理等。凭借简洁的 API 和最少的配置,Fast-Excel 能缩短开发时间并提升性能。
Fast-Excel 入门指南
推荐的在项目中安装 Fast-Excel 的方式是使用 Composer。请使用以下命令进行顺利安装
通过 PHP 将集合导出为 Excel 文件
Fast-Excel 让将集合或模型导出到 Excel 变得极其简单。只需几行代码,即可生成 .xlsx、.csv 或 .ods 文件。此功能消除了样板代码并加快了开发速度,尤其适用于仪表板或报告系统。下面的示例演示了如何使用 PHP 代码将数据导出为 MS Excel XLSX 文件。该库可以直接将 Laravel 集合转换为 Excel 文件,而无需复杂的配置。
如何通过 PHP 库将数据导出为 Excel XLSX 文件?
use Rap2hpoutre\FastExcel\FastExcel;
// Sample data
$list = collect([
['id' => 1, 'name' => 'Jane'],
['id' => 2, 'name' => 'John'],
]);
// Export to Excel
(new FastExcel($list))->export('users.xlsx');
使用生成器进行内存高效的分块导出
开源的 Fast-Excel 库已支持低内存使用,并提供了简洁的导入导出语法。这是处理 \"big data\" 的旗舰功能。您不必将 100 万用户加载到数组中,而是使用 Laravel 的 cursor() 或自定义的 yield 生成器。导出器逐行处理数据,写入文件后即从内存中释放。这使得无论是导出 100 行还是 1000 万行,内存使用都保持恒定(非常低)。
如何在 PHP 应用中使用自定义标题导出特定字段?
return (new FastExcel(User::all()))->export('formatted_users.xlsx', function ($user) {
return [
'Full Name' => $user->firstname . ' ' . $user->lastname,
'Email Address' => $user->email,
'Member Since' => $user->created_at->format('Y-m-d'),
'Status' => $user->is_active ? 'Active' : 'Suspended'
];
});
将数据直接导入数据库
与手动导入行不同,Fast-Excel 可以处理每一行并直接插入到您的数据库中。这非常适合管理员批量上传,并具有批量数据库插入、代码更简洁、手动处理更少、管理员工作流更简便等诸多优势。这对人力资源系统、CRM 和电子商务平台尤为有用。下面是一个有用的示例,展示了如何在 PHP 应用程序中将数据导入数据库。
如何通过 PHP 库直接将数据导入数据库?
use Rap2hpoutre\FastExcel\FastExcel;
use App\Models\User;
(new FastExcel)->import('users.xlsx', function ($line) {
return User::create([
'name' => $line['Name'],
'email' => $line['Email'],
]);
});
通过 PHP 自定义列映射和格式化
数据库列并不总是易于阅读。Fast-Excel 库已完整支持自定义列或行的映射和格式化。此功能允许您精确定义要导出的属性,并实时重新格式化它们的值。无论是需要将姓氏大写、合并名字和姓氏,还是将 ‘user_id’ 重命名为 ‘员工标识符’,闭包都让您对最终输出数组拥有完全控制。