如何解决PHPSpreadsheet公式在日期之间不起作用
我想用PHPSpreadsheet计算两个日期时间之间的时差。这就是Excel的工作方式:
A1和A2单元格格式为:
这是网上的结果:
通过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();
我也尝试过使用这种格式(2020年6月24日14:30),但结果是相同的(#VALUE!)
$spreadsheet->getActiveSheet()->setCellValue('A1','6/24/2020 14:30');
任何人都知道应该如何做?
解决方法
在Excel文档中,日期存储为数字而不是字符串。因此,您需要将正确的数字传递给setCellValue()
。
PhpSpreadsheet提供实用程序方法Date::stringToExcel()
,可将字符串转换为Excel日期。您可以像这样使用它:
$date = PhpSpreadsheet\Shared\Date::stringToExcel('2020-06-24 12:30');
$spreadsheet->getActiveSheet()->setCellValue('A1',$date);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。