在 Laravel 中将日期和时间添加到 excel 导出
Adding date and time to excel export in Laravel
我是 Laravel 的新手,我正在制作一个新项目,我将我的学校数据导出到带有 maatwebsite 的电子表格中,我用以下代码为其命名:
public function headings(): array
{
return [
['Staff Report'], [
'staffid',
'name',
'emailaddress',
'faculty',
]
];
}
我想要完成的是在标题旁边加上日期,所以它应该是 Staff Report-04/05/21
我尝试使用日期时间,但这依赖于数据库中的 created_at 字段...以前有人用过吗?
欢迎使用 Whosebug 和 Laravel。
因此,如果您想显示正确的格式,则必须在导出前映射数据并指定 columnFormats 函数。
为此,您还必须使用 PhpOffice\PhpSpreadsheet\Style\NumberFormat 并使用 PhpOffice\PhpSpreadsheet\Shared\Date。
就我而言,我将导出用户公司的客户。根据您的用例更改代码。
参考。 link - https://docs.laravel-excel.com/2.1/export/format.html
在 columnFormats 函数下,您必须指定列标题,如我的 (K) 和日期格式的“NumberFormat::FORMAT_DATE_DDMMYYYY”。
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class ClientsExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
{
public function __construct()
{
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$user = Auth::user();
return $user->company->clients;
}
public function headings(): array
{
return [
'Name',
'Email',
'Address',
'Country',
'Department',
'Zip',
'Fax',
'Phone',
'Mobile',
'Date'
];
}
public function columnFormats(): array
{
return [
'G' => 0,
'H' => 0,
'I' => '@',
'J' => '@',
'K' => NumberFormat::FORMAT_DATE_DDMMYYYY,
];
}
/**
* @var Client $client
*/
public function map($client): array
{
return [
$client->name,
$client->tax_id,
$client->email,
// other data
$client->fax,
$client->phone,
$client->mobile,
Date::dateTimeToExcel($client->created_at)
];
}
}
我是 Laravel 的新手,我正在制作一个新项目,我将我的学校数据导出到带有 maatwebsite 的电子表格中,我用以下代码为其命名:
public function headings(): array
{
return [
['Staff Report'], [
'staffid',
'name',
'emailaddress',
'faculty',
]
];
}
我想要完成的是在标题旁边加上日期,所以它应该是 Staff Report-04/05/21
我尝试使用日期时间,但这依赖于数据库中的 created_at 字段...以前有人用过吗?
欢迎使用 Whosebug 和 Laravel。
因此,如果您想显示正确的格式,则必须在导出前映射数据并指定 columnFormats 函数。
为此,您还必须使用 PhpOffice\PhpSpreadsheet\Style\NumberFormat 并使用 PhpOffice\PhpSpreadsheet\Shared\Date。
就我而言,我将导出用户公司的客户。根据您的用例更改代码。
参考。 link - https://docs.laravel-excel.com/2.1/export/format.html
在 columnFormats 函数下,您必须指定列标题,如我的 (K) 和日期格式的“NumberFormat::FORMAT_DATE_DDMMYYYY”。
<?php
namespace App\Exports;
use Maatwebsite\Excel\Concerns\FromCollection;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithColumnFormatting;
use PhpOffice\PhpSpreadsheet\Shared\Date;
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
class ClientsExport implements FromCollection, WithHeadings, WithMapping, WithColumnFormatting
{
public function __construct()
{
}
/**
* @return \Illuminate\Support\Collection
*/
public function collection()
{
$user = Auth::user();
return $user->company->clients;
}
public function headings(): array
{
return [
'Name',
'Email',
'Address',
'Country',
'Department',
'Zip',
'Fax',
'Phone',
'Mobile',
'Date'
];
}
public function columnFormats(): array
{
return [
'G' => 0,
'H' => 0,
'I' => '@',
'J' => '@',
'K' => NumberFormat::FORMAT_DATE_DDMMYYYY,
];
}
/**
* @var Client $client
*/
public function map($client): array
{
return [
$client->name,
$client->tax_id,
$client->email,
// other data
$client->fax,
$client->phone,
$client->mobile,
Date::dateTimeToExcel($client->created_at)
];
}
}