2014-07-03 116 views
2

我使用PHPExcel库,我提取的列单元格的内容,该单元格有一个日期,在Excel中它显示为“30/07/2014”,但是当我使用它显示的库:41850作为日期值,我不能依靠Excel格式化单元格,因为每次我得到一个不同的日期文件,所以我的问题是,有没有办法将使用库的值41850转换为原始日期文字30/07/2014?PHP Excel与日期格式问题

我正在使用的代码是:

$inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($inputFileName); 
$outPut = $objPHPExcel->getSheet(0)->getCellByColumnAndRow(6, 6)->getFormattedValue(); 
echo $outPut;//41850 

回答

1

你的问题是

$objReader->setReadDataOnly(true); 

你告诉PHPExcel为只读从细胞的原始数据,而无需任何格式的信息;但MS Excel对日期使用浮点数(从1/1/1900开始的天数或自2004年1月1日以来的天数,具体取决于所用的日历)以及数字格式掩码,以便将其格式化为日期....通过设置读取数据只是真实的,你告诉PHPExcel不要读取数字格式掩码,所以没有办法区分日期值和其他浮点值。

解决办法:不要使用

$objReader->setReadDataOnly(true); 
+0

干得好,这对我来说是完美的解决方案,它的工作:)感谢马克 – user3593154

+0

MS Excel中对日期某些特定的语言环境的格式,所以日期格式掩码实际上会根据在用户计算机上运行MS Excel时设置的区域设置来调整显示以显示不同的日期; PHPExcel不支持区域识别,所以它使用通用格式的区域识别日期格式 –

+0

我不认为这是行之有效的我在EXCEL中显示的日期就像“2014年10月7日”,我仍然得到“ 07-10-14“格式仍然提取。有没有解决这个问题? – user3593154