如何在 laravel 上传 excel 中使用时间格式 excel 单元格?
How to use time format excel cell in laravel uploaded excel?
我正在使用 laravel 软件包 maatwebsite/excel 版本 3.1 进行 excel 文件上传。
$collection = Excel::toCollection(new UsersImport, storage_path('app/' . $newFile));
我上传了一个单元格格式为时间的文件。
这里的时间和时间单元格有时间格式。
当我上传这个文件时,结果输出是:
在生成的输出时间和超时单元格中,数据被转换为字符串。
如何防止它转换或如何将它从文本更改为时间?
您需要手动转换它们或使用映射器。
可以使用内置函数转换其中一个日期,如下例所示:
\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($collection->first()[4])
我觉得你也可以用Carbon
Carbon::parse($collection->first()[4])
如果您使用映射器,您可以事先定义它,不用担心。
https://docs.laravel-excel.com/3.1/imports/mapped-cells.html
namespace App\Imports;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithMappedCells;
use PhpOffice\PhpSpreadsheet\Shared\Date;
new Import implements WithMappedCells, ToModel
{
public function mapping(): array
{
return [
'timecellA' => 'A5',
'timecellB' => 'A6',
'timecellC' => 'A7',
'timecellD' => 'A8',
];
}
public function model(array $row)
{
return [
'timecellA' => Date::excelToDateTimeObject($row['timecellA'],
'timecellB' => Date::excelToDateTimeObject($row['timecellB'],
'timecellC' => Date::excelToDateTimeObject($row['timecellC'],
'timecellD' => Date::excelToDateTimeObject($row['timecellD'],
];
}
}
我正在使用 laravel 软件包 maatwebsite/excel 版本 3.1 进行 excel 文件上传。
$collection = Excel::toCollection(new UsersImport, storage_path('app/' . $newFile));
我上传了一个单元格格式为时间的文件。
这里的时间和时间单元格有时间格式。
当我上传这个文件时,结果输出是:
在生成的输出时间和超时单元格中,数据被转换为字符串。 如何防止它转换或如何将它从文本更改为时间?
您需要手动转换它们或使用映射器。
可以使用内置函数转换其中一个日期,如下例所示:
\PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($collection->first()[4])
我觉得你也可以用Carbon
Carbon::parse($collection->first()[4])
如果您使用映射器,您可以事先定义它,不用担心。
https://docs.laravel-excel.com/3.1/imports/mapped-cells.html
namespace App\Imports;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithMappedCells;
use PhpOffice\PhpSpreadsheet\Shared\Date;
new Import implements WithMappedCells, ToModel
{
public function mapping(): array
{
return [
'timecellA' => 'A5',
'timecellB' => 'A6',
'timecellC' => 'A7',
'timecellD' => 'A8',
];
}
public function model(array $row)
{
return [
'timecellA' => Date::excelToDateTimeObject($row['timecellA'],
'timecellB' => Date::excelToDateTimeObject($row['timecellB'],
'timecellC' => Date::excelToDateTimeObject($row['timecellC'],
'timecellD' => Date::excelToDateTimeObject($row['timecellD'],
];
}
}