PHPExcel不计算公式

PHPExcel not calculating formulas

所以我对 phpExcel 有点陌生,我正在用表单中的数据制作 sheet(未完成但会出现)但是我有一个问题我的公式不会计算我已经测试了预设公式并从中导入公式代码,但 none 不会工作,我得到的只是 0 和保护模式,如果我单击编辑 sheet 并单击公式所在的单元格,然后按回车,它可以工作并计算它

<?php
/** Error reporting */
error_reporting(E_ALL);

/** PHPExcel */
include 'Classes/PHPExcel.php';

/** PHPExcel_Writer_Excel2007 */
include 'Classes/PHPExcel/Writer/Excel2007.php';
include 'Classes/PHPExcel/IOFactory.php';



// Load file if it doesn't exists
if (file_exists('Exceltime.xlsx'))
{
    $objPHPExcel = PHPExcel_IOFactory::load('Exceltime.xlsx');
}
else
{
    $objPHPExcel = new PHPExcel();
}



$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('C4', '10:00')
        ->setCellValue('D4', '18:00')
        ->setCellValue('E4', '01:30')
        ->setCellValue('F4', '=(D4-C4-E4)');

$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('C5', '10:00')
        ->setCellValue('D5', '18:00')
        ->setCellValue('E5', '01:30')
        ->setCellValue('F5', '=(D5-C5-E5)');




$objPHPExcel->getActiveSheet()->setTitle('TidsRapport Namn');
header('Content-Type: application/vnd.openxmlformats-              officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="Tidsrapport Namn.xlsx"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->setPreCalculateFormulas(TRUE);
$objWriter->save('php://output');
?>

所以它应该做的就是导入工作时钟小时数 Start/end/break 然后公式计算你工作了多少 hours/minutes

此外,如果有更好的方法或我应该做的事情,我可以免费尝试:)

更好的答案是实际使用 MS Excel date/time 值,而不是希望 PHPExcel/MS Excel 会猜测您的字符串值('10:00') 应该是时间。

根据 PHPExcel documentation

$objPHPExcel->setActiveSheetIndex(0)
        ->setCellValue('C4', PHPExcel_Calculation_DateTime::TIMEVALUE('10:00'))
        ->setCellValue('D4', PHPExcel_Calculation_DateTime::TIMEVALUE('18:00'))
        ->setCellValue('E4', PHPExcel_Calculation_DateTime::TIMEVALUE('01:30'))
        ->setCellValue('F4', '=(D4-C4-E4)');
$objPHPExcel->getActiveSheet()->getStyle('C4:E4')
    ->getNumberFormat()
    ->setFormatCode('hh:mm');
$objPHPExcel->getActiveSheet()->getStyle('F4')
    ->getNumberFormat()
    ->setFormatCode('[hh]:mm');