getActiveSheet(); $sheet->setCellValue('A1', Date::dateTimeToExcel($originalDateTime)); $reloadedSpreadsheet = $this->writeAndReload($spreadsheet, 'Ods'); $spreadsheet->disconnectWorksheets(); $rsheet = $reloadedSpreadsheet->getActiveSheet(); $rsheet->getStyle('A1') ->getNumberFormat() ->setFormatCode('yyyy-mm-dd hh:mm:ss.000'); /** @var float */ $reread = $rsheet->getCell('A1')->getValue(); $temp = Date::excelToDateTimeObject($reread) ->format('Y-m-d H:i:s.u'); self::assertSame("{$date} {$time}.000000", $temp, 'round trip works with float value'); $formatted = $rsheet->getCell('A1')->getFormattedValue(); self::assertSame("{$date} {$time}.000", $formatted, 'round trip works with formatted value'); /** @var float */ $temp = Date::stringToExcel($formatted); $temp = Date::excelToDateTimeObject($temp) ->format('Y-m-d H:i:s.u'); self::assertSame("{$date} {$time}.000000", $temp, 'round trip works using stringToExcel on formatted value'); $reloadedSpreadsheet->disconnectWorksheets(); } }