[Laravel-Excel中文文档] maatwebsite/excel映射处理导出数据以及设置导出标题
Song •
1528 次浏览 •
0个评论 •
2022年03月21日
映射行
通过添加WithMapping
您映射需要添加为行的数据。这样您就可以控制每列的实际来源。如果使用 Eloquent 查询构建器:
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;
class InvoicesExport implements FromQuery, WithMapping
{
/**
* @var Invoice $invoice
*/
public function map($invoice): array
{
return [
$invoice->invoice_number,
$invoice->user->name,
Date::dateTimeToExcel($invoice->created_at),
];
}
}
多行
您还可以在 map 函数中返回多行:
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithMapping;
class InvoicesExport implements FromQuery, WithMapping
{
/**
* @var Invoice $invoice
*/
public function map($invoice): array
{
// This example will return 3 rows.
// First row will have 2 column, the next 2 will have 1 column
return [
[
$invoice->invoice_number,
Date::dateTimeToExcel($invoice->created_at),
],
[
$invoice->lines->first()->description,
],
[
$invoice->lines->last()->description,
]
];
}
}
添加标题行
通过添加WithHeadings
关注点可以轻松添加标题行。标题行将添加为工作表的第一行。
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
class InvoicesExport implements FromQuery, WithHeadings
{
public function headings(): array
{
return [
'#',
'User',
'Date',
];
}
}
如果您需要有多个标题行,您可以从该headings()
方法返回多行:
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
class InvoicesExport implements FromQuery, WithHeadings
{
public function headings(): array
{
return [
['First row', 'First row'],
['Second row', 'Second row'],
];
}
}
准备行
如果您需要在将这些行附加到工作表之前准备行,您可以将方法添加prepareRows
到导出类。此方法将在展平查询输出和调用之前调用map()
。
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
class UsersExport implements FromQuery, WithHeadings
{
public function prepareRows($rows)
{
return $rows->transform(function ($user) {
$user->name .= ' (prepared)';
return $user;
});
}
}
提交评论
请登录后评论
用户评论
当前暂无评价,快来发表您的观点吧...
更多相关好文
-
laravel中distinct()的使用方法与去重 2017-09-11
-
Laravel将view缓存为静态html,laravel页面静态缓存 2021-10-09
-
[ laravel爬虫实战--基础篇 ] guzzle描述与安装 2017-11-01
-
[ 配置教程 ] 在ubuntu16.04中部署LNMP环境(php7+maridb且开启maridb远程以及nginx多域名访问 )并配置laravel环境 2017-07-18
-
花生壳绑定ubuntu服务器? 2024-08-23
热门文章
-
花生壳绑定ubuntu服务器? 2024-08-23
-
Laravel模型更新全表如何实现? 2024-03-11
-
php图片转为二进制数据的方法 2023-10-23
-
Jquery如何监听动态创建元素的点击事件? 2023-09-08
-
所以SheetJS实现table导出数据为Excel 2023-09-05
所以SheetJS实现table导出数据为Excel