PHPExcel不计算公式

时间:2016-10-24 17:21:34

标签: php excel excel-formula phpexcel

所以我有点新的phpExcel和我正在制作一张表格中的数据(未完成但会来)但我有一个问题我的公式不会计算我已经测试预设公式并从代码导入公式但没有不会工作所有我得到的是0和保护模式,如果我点击编辑表并点击公式所在的单元格并点击输入它工作并计算它

<?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');
?>

所以它应该做的是导入工作时钟小时开始/结束/休息然后公式计算你工作的小时/分钟

如果有更好的方法或我应该做的事情我可以自由尝试:)

1 个答案:

答案 0 :(得分:0)

更好的答案是实际使用MS Excel日期/时间值,而不是希望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');