Phpspreadsheet - 以float

时间:2018-03-07 01:01:49

标签: php excel phpexcel phpspreadsheet

我有一个有时间输入的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文档,但我还没有找到解决方案。

2 个答案:

答案 0 :(得分:3)

幸好我刚才找到了答案。

Sub Demo()
Dim s As String
Dim p As Integer

s = "ab:cde,fghij Hello world, thanks a lot , for everything and "

p = InStr(10, s, ",")
Debug.Print p

s = Mid(s, 1, p - 1) & "..."
Debug.Print s
End Sub

希望这对其他人有用。

答案 1 :(得分:0)

在读取数据之前对数据进行格式化。

例如:

单元格数据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();