Phpspreadsheet - 时间单元格检索为浮点数
Phpspreadsheet - Time cell retrieved as float
我有一个包含时间输入的 excel 文件。
Mar 01, 2018 | Thursday | 8:00 AM | 5:00 PM
Mar 02, 2018 | Friday | 8:00 AM | 5:00 PM
但是当我的代码尝试读取这些单元格时,输出变为浮点数(例如 8:00 AM
变为 0.33333333333333
)。这是我的代码
$date = $sheet->getCell("A".$row)->getValue();
$time_in = $sheet->getCell("C".$row)->getValue();
$time_out = $sheet->getCell("D".$row)->getValue();
echo "date: ".$date. //Mar 01, 2018
" time_in: ".$time_in. //becomes 0.333333333333333
" time_out: ".$time_out; //becomes 0.708333333333333
如何在不更改 phpspreadsheet 值的情况下按原样输出?我试过查看 phpspreadsheet 文档,但没有找到解决方案。
谢天谢地,我刚刚找到了答案。
$in = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($time_in);
echo gmdate("g:i a", $in);
希望这对其他人有用。
在读取之前格式化数据。
例如:
单元格数据2020/10/13 19:00:00
直接访问会得到44117.791666667
$sheet->toArray();
访问前格式化会得到2020-10-13 19:00:00
$row_num = $sheet->getHighestDataRow();
$sheet->getStyle("H1:H$row_num")->applyFromArray(array("numberFormat"=>array("formatCode"=>'yyyy-mm-dd hh:mm:ss'))); // H is the datatime row
$sheet->toArray();
我有一个包含时间输入的 excel 文件。
Mar 01, 2018 | Thursday | 8:00 AM | 5:00 PM
Mar 02, 2018 | Friday | 8:00 AM | 5:00 PM
但是当我的代码尝试读取这些单元格时,输出变为浮点数(例如 8:00 AM
变为 0.33333333333333
)。这是我的代码
$date = $sheet->getCell("A".$row)->getValue();
$time_in = $sheet->getCell("C".$row)->getValue();
$time_out = $sheet->getCell("D".$row)->getValue();
echo "date: ".$date. //Mar 01, 2018
" time_in: ".$time_in. //becomes 0.333333333333333
" time_out: ".$time_out; //becomes 0.708333333333333
如何在不更改 phpspreadsheet 值的情况下按原样输出?我试过查看 phpspreadsheet 文档,但没有找到解决方案。
谢天谢地,我刚刚找到了答案。
$in = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($time_in);
echo gmdate("g:i a", $in);
希望这对其他人有用。
在读取之前格式化数据。
例如:
单元格数据2020/10/13 19:00:00
直接访问会得到44117.791666667
$sheet->toArray();
访问前格式化会得到2020-10-13 19:00:00
$row_num = $sheet->getHighestDataRow();
$sheet->getStyle("H1:H$row_num")->applyFromArray(array("numberFormat"=>array("formatCode"=>'yyyy-mm-dd hh:mm:ss'))); // H is the datatime row
$sheet->toArray();