
laravel导出excel
本文最后更新于 2024-04-17,文章内容可能已经过时,请注意发布时间。
要在 Maatwebsite/Excel 中使用特定的 Excel 模板,你需要使用 "WithEvents" 接口,并在 "registerEvents" 方法中指定一个 "BeforeExport" 事件。在这个事件中,你可以修改 Excel 对象,以便在导出数据之前应用你的模板。
以下是一个示例,展示如何在 Laravel 中使用 Maatwebsite/Excel 配置特定的 Excel 模板:
首先,确保你已经安装了 Maatwebsite/Excel 包。如果没有,请使用以下命令安装:
composer require maatwebsite/excel
在
app/Exports
目录下创建一个新的导出类,例如MyExcelExport.php
:
<?php
namespace App\Exports;
use App\Models\MyModel;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithEvents;
use Maatwebsite\Excel\Events\BeforeExport;
use Maatwebsite\Excel\Events\BeforeWriting;
use Maatwebsite\Excel\Events\BeforeSheet;
class MyExcelExport implements FromQuery, WithHeadings, WithMapping, WithEvents
{
use Exportable;
public function query()
{
return MyModel::query();
}
public function headings(): array
{
return [
'ID',
'Name',
'Email',
'Created At',
'Updated At',
];
}
public function map($row): array
{
return [
$row->id,
$row->name,
$row->email,
$row->created_at,
$row->updated_at,
];
}
public function registerEvents(): array
{
return [
BeforeExport::class => function (BeforeExport $event) {
$event->writer->getProperties()->setCreator('Your Name');
$event->writer->getProperties()->setTitle('Your Custom Title');
},
BeforeWriting::class => function (BeforeWriting $event) {
$templateFile = storage_path('app/templates/my_template.xlsx');
$event->writer->reopen($templateFile, \Maatwebsite\Excel\Excel::XLSX);
},
BeforeSheet::class => function (BeforeSheet $event) {
$event->sheet->setCellValue('A1', 'Custom Header');
},
];
}
}
在这个例子中,我们从 MyModel
模型中导出数据。你需要将其替换为你自己的模型。
将你的 Excel 模板文件(例如
my_template.xlsx
)保存到storage/app/templates
目录下。在控制器中使用
MyExcelExport
类导出数据:
<?php
namespace App\Http\Controllers;
use App\Exports\MyExcelExport;
use Maatwebsite\Excel\Facades\Excel;
class MyController extends Controller
{
public function export()
{
return Excel::download(new MyExcelExport(), 'my_data.xlsx');
}
}
最后,在路由文件(例如
routes/web.php
)中添加一个路由,以便访问导出功能:
use App\Http\Controllers\MyController;
Route::get('/export', [MyController::class, 'export']);
现在,当你访问 /export
路径时,Laravel 将会导出数据并应用你的自定义 Excel 模板。
- 感谢你赐予我前进的力量
赞赏者名单
因为你们的支持让我意识到写文章的价值🙏
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 年糕崽崽
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果