PHPExcel将字符串日期放入.xls
伙计们。我在DB中的日期为字符串“d/m/Y”。 当我将这些日期输入Excel时,它会显示正常日期,如2000年10月3日,但当我单击单元格时,它会显示值PHPExcel将字符串日期放入.xls,php,excel,phpexcel,Php,Excel,Phpexcel,伙计们。我在DB中的日期为字符串“d/m/Y”。 当我将这些日期输入Excel时,它会显示正常日期,如2000年10月3日,但当我单击单元格时,它会显示值'03/10/2000。因此,该值是string,而不是我所需的date 因此,我将日期从DB转换为PHP日期对象,并使用var\u dump确保该日期是带有该代码的日期对象: $date = date_create_from_format('d/m/Y', $array[$i-20]['Date']); $date
'03/10/2000
。因此,该值是string,而不是我所需的date
因此,我将日期从DB转换为PHP日期对象,并使用var\u dump
确保该日期是带有该代码的日期对象:
$date = date_create_from_format('d/m/Y', $array[$i-20]['Date']);
$date->format('m/d/Y');
但无论如何,生成的.xls中的值在值之前带有“
为什么会出现以及如何解决?MS Excel将日期存储为序列化时间戳,即自1900年1月1日(或如果使用Mac日历,则为1904年1月1日)起的天数。要将值存储为日期(而不仅仅是字符串),需要将字符串日期转换为序列化时间戳,然后设置单元格的格式掩码
$date = date_create_from_format('d/m/Y', $array[$i-20]['Date']);
$excelDate = PHPExcel_Shared_Date::PHPToExcel($date);
将$excelDate设置为单元格值
$objPHPExcel->getActiveSheet()->setCellValue('C11', $excelDate );
然后将格式掩码应用于该单元格
$objPHPExcel->getActiveSheet()
->getStyle('C11')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
中的示例脚本演示了这一点
编辑
您可以(而且更有效的是)将样式应用于单元格区域:只需在getStyle()
调用中指定区域
$objPHPExcel->getActiveSheet()
->getStyle('C11:C200')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
获取可用格式的详细信息:PHPExcel内置了许多预定义格式,这些格式可以在中作为常量找到。然而,您并不局限于这组格式;而且(与MS Excel允许您定义“自定义”格式的方式相同),您只需在格式正常工作时使用几乎任何一种方法传递定义格式的字符串(例如“d-mmm-yyyy”),谢谢。你能说一下如何将该格式应用于某个范围,以及在哪里可以找到有关货币、数字、百分比等所有可用格式的信息吗?谢谢对知识感到惊讶+1@new_newB1e-编辑我的答案,以包括对这些额外问题的答复questions@AlivetoDie-知识来自于编写图书馆