我有一部分代码可以生成任务的持续时间,以便为我的报告格式化h:mm(5:00)。
$duration=explode(':',task_duration($item_task->duration_plan));
$time_str='=TIME('.$duration[0].';'.$duration[1].';0)';
$excel->getActiveSheet()->setCellValue('D' . $row, $time_str);
$excel->getActiveSheet()->getStyle('D' . $row)-`enter code here`>getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
所以我得到类似=TIME(5:0:0)
的东西,它应该像文件一样显示在5:00。
所有内容都适用于.xls,但当我尝试在.xlsx中创建文件时,时间单元格中没有任何内容,只有0
。
然后我试着解决这个问题:
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
$excel->getActiveSheet()->setCellValue('D' . $row , task_duration($item_task->duration_plan) . ':00');
$excel->getActiveSheet()->getStyle('D' . $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
它同时适用于.xls和.xlxs,但是当小时数大于24时,时间单元格不会显示为时间(25:00:00),而是显示为字符串(' 25: 00:00)我无法获得所有任务的总时间。
我所有其他非时间格式的单元格看起来都很好。
有什么想法吗?
答案 0 :(得分:1)
感谢您的帮助 我把秒数除以86400就可以了。
$activeSheetObj->setCellValueExplicit(
PHPExcel_Cell::stringFromColumnIndex($columnIndex).$line,
$seconds/86400, PHPExcel_Cell_DataType::TYPE_NUMERIC);
$activeSheetObj->getStyle(PHPExcel_Cell::stringFromColumnIndex($columnIndex++).$line)
->getNumberFormat()->setFormatCode('[HH]:MM:SS');
答案 1 :(得分:0)
引用PHPExcel开发人员文档,第4.6.4节(Write a formula into a cell
):
在Excel文件中,公式始终存储在英文版Microsoft Office Excel中,并且PHPExcel以此格式在内部处理所有公式。这意味着以下规则成立:
- 小数分隔符是'。' (周期)
- 函数参数分隔符是',' (逗号)
- 矩阵行分隔符是&#39 ;;' (分号)
- 必须使用英文函数名称
您使用分号(;
)作为TIME()
函数的参数分隔符
答案 2 :(得分:0)
回答关于显示时间值的第二个问题> 24:00
FORMAT_DATE_TIME3
是时间格式代码h:mm
,根据24小时制显示时间,超过24小时的值将翻转到第二天,因此16:00 + 16:00将给出1天08:00
而不是32:00
作为时间;但是h:mm
会抑制天数,而你却看不到小于24小时的小时值
如果您希望小时值超过24(例如,如果要一起添加多次以计算总持续时间),则需要使用适当的数字格式掩码,如[hh]:mm
。此格式将显示32:00
作为16:00 + 16:00的值。
答案 3 :(得分:0)
我还希望以您希望完成的格式将小时数存储到单元格中。我了解到你需要以十进制天数[1]存储时间,然后应用自定义格式。很像:
$excel->getActiveSheet()->setCellValue('D' . $row, $days + ($hours / 24) + ($minutes / (24 * 60)));
$excel->getActiveSheet()->getStyle('D' . $row)->getNumberFormat()->setFormatCode('[hh]:mm:ss');`
这似乎在OpenOffice和Apple的Numbers中都能正常打开。在格式代码中使用大写字母无法在Numbers中正确打开。
[1] dd/mm/yyyy format in PHPExcel adding single quote(') in cell