PHPSReadSheet公式在日期之间不起作用

PHPSReadSheet公式在日期之间不起作用,php,excel,datetime,phpspreadsheet,Php,Excel,Datetime,Phpspreadsheet,我想用PHPSReadSheet计算两个日期时间之间的差异(以小时为单位)。Excel就是这样做的: A1和A2单元格格式为: 这是web上的结果: 当我通过PHPSpreadsheet更改值时,我得到#value!和不同的值格式 $reader = PhpSpreadsheet\IOFactory::createReader("Xlsx"); $target_file = __DIR__ . '/test.xlsx'; $spreadsheet = $reader-&

我想用PHPSReadSheet计算两个日期时间之间的差异(以小时为单位)。Excel就是这样做的:

A1和A2单元格格式为:

这是web上的结果:

当我通过PHPSpreadsheet更改值时,我得到#value!和不同的值格式

$reader = PhpSpreadsheet\IOFactory::createReader("Xlsx");
$target_file = __DIR__ . '/test.xlsx';
$spreadsheet = $reader->load($target_file);
$spreadsheet->getActiveSheet()->setCellValue('A1', '24.6.2020 12:30');
$writer = new PhpSpreadsheet\Writer\Html($spreadsheet);
$output = $writer->generateHTMLHeader();
$output .= $writer->generateStyles(true);
$output .= $writer->generateSheetData();
$output .= $writer->generateHTMLFooter();
$doc = new DOMDocument();
@$doc->loadHTML($output);
echo $doc->saveHTML();

我也尝试过这样的格式,如6/24/2020 14:30,但结果是一样的(#VALUE!)


有人知道该怎么做吗?

在Excel文档中,日期存储为数字,而不是字符串。因此,您需要将正确的数字传递给
setCellValue()

PHPSReadSheet提供了将字符串转换为Excel日期的实用方法。您可以这样使用它:

$date = PhpSpreadsheet\Shared\Date::stringToExcel('2020-06-24 12:30');
$spreadsheet->getActiveSheet()->setCellValue('A1', $date);

@您可以使用任何格式来显示日期
stringToExcel()
与格式无关,它只计算内部数值。@Oliver我不知道这个函数,它肯定会对我的日常工作有所帮助。谢谢@Olivier OK但如果字符串不是默认格式,函数如何知道如何解析该字符串?@wast
stringToExcel()
要求字符串的格式为YYYY-MM-DD HH:MI。
$date = PhpSpreadsheet\Shared\Date::stringToExcel('2020-06-24 12:30');
$spreadsheet->getActiveSheet()->setCellValue('A1', $date);