was*_*ast 3 php excel datetime phpspreadsheet
我想用 PHPSpreadsheet 以小时为单位计算 2 个日期时间之间的差异。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();
Run Code Online (Sandbox Code Playgroud)
我也尝试过像这样的格式 6/24/2020 14:30 但结果是一样的(#VALUE!)
$spreadsheet->getActiveSheet()->setCellValue('A1', '6/24/2020 14:30');
Run Code Online (Sandbox Code Playgroud)
任何人都知道应该如何做到这一点?
在 Excel 文档中,日期存储为数字,而不是字符串。所以你需要将正确的数字传递给setCellValue().
PhpSpreadsheet 提供了Date::stringToExcel()将字符串转换为 Excel 日期的实用方法。你可以这样使用它:
$date = PhpSpreadsheet\Shared\Date::stringToExcel('2020-06-24 12:30');
$spreadsheet->getActiveSheet()->setCellValue('A1', $date);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
200 次 |
| 最近记录: |