【发布时间】:2014-04-29 18:56:30
【问题描述】:
我需要在一个单元格中输入一个日期,当我查看它的格式时,它看起来像 *14/03/01。
我输入的值是一个简单的字符串,因此当我得到计算值时会忽略我输入的日期,因为它会在日历(嗯,包含实际年份的所有日期的列)中比较我输入的日期输入日期以设置与输入日期相对应的适当值。
有没有办法将 Excel 期望的格式放入?
【问题讨论】:
我需要在一个单元格中输入一个日期,当我查看它的格式时,它看起来像 *14/03/01。
我输入的值是一个简单的字符串,因此当我得到计算值时会忽略我输入的日期,因为它会在日历(嗯,包含实际年份的所有日期的列)中比较我输入的日期输入日期以设置与输入日期相对应的适当值。
有没有办法将 Excel 期望的格式放入?
【问题讨论】:
MS Excel 使用时间戳值作为日期,然后将其屏蔽以进行显示;不是格式化的字符串。
来自/Examples 文件夹中的02types.php:
$dateTimeNow = time(); // Get a Unix/PHP timestamp value for the date/time
$objPHPExcel->getActiveSheet() // Convert Unix timestamp to a MS Excel
->setCellValue('A9', 'Date/Time') // serialized timestamp, and set that as
->setCellValue('B9', 'Date') // the cell value
->setCellValue(
'C9',
PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )
);
$objPHPExcel->getActiveSheet() // Format as date and time
->getStyle('C9')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
PHPExcel_Shared_Date::PHPToExcel() 方法将采用 Unix 时间戳或字符串(格式类似于您可能传递给 strtotime() 的格式)并将其转换为 MS Excel 时间戳值;而setFormatCode() 调用将该单元格设置为格式掩码,以向 MS Excel 指示该单元格包含应显示为日期和/或时间的值
【讨论】:
$date = $start_date->getTimestamp(); $mainSheet = $objPHPExcel->getSheet(0); $mainSheet->setCellValue('B1', PHPExcel_Shared_Date::PHPToExcel($date)); $mainSheet->getStyle('B1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY); 但还是不行。
$start_date->getTimestamp(); 的值是多少?实际存储在单元格 B1 中的是什么?它应该是一个浮点数(值 41720.00 是今天的日期,默认日历为 1900 年).... 设置后该单元格上的简单 getValue() 应该会告诉您。
41720.618009259
getFormattedValue() 调用应返回字符串“2014-03-22”(格式掩码设置为 FORMAT_DATE_YYYYMMDD2)。如果使用 Excel2007 或 Excel5 Writer 保存,打开文件时在 MS EXcel 中看到什么?
22/03/2014 15:25:27问题是时间,有没有办法不包括时间?
$duree = '08:00:00';
PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
$sheet->setCellValueByColumnAndRow($row, $num, $duree);
$sheet->getStyleByColumnAndRow($row, $num)
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
在我的牢房里,我可以看到 08:00
【讨论】: