2列目のセルの値を日付書式で取得する。
// getFormattedValueメソッドを使用する場合
for ( $row = 1; $row <= 10; $row++ ) {
$date_val = $sheet->getCellByColumnAndRow( 1, $row )->getFormattedValue();
if ( preg_match( '/^[0-9]{2}\-[0-9]{2}\-[0-9]{2}$/', $date_val ) )
$date_val = DateTime::createFromFormat( 'm-d-y', $date_val )->format( 'Y/m/d' );
}
// getValueメソッドを使用する場合
$date_val = $sheet->getCellByColumnAndRow( 0, $row )->getValue();
if ( $date_val != '' ) {
$date_val = PHPExcel_Style_NumberFormat::toFormattedString( $date_val, PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2 );
日付セルの値をgetValueメソッドで取得すると「1900/1/1」からの経過日数となる。PHPExcel_Style_NumberFormat::toFormattedStringメソッドや自前で変換する方法もあるが、getFormattedValueメソッドを使うことで’m-d-y’書式の文字列(例:2010年5月21日なら’05-21-10’)が取得できる。上記の例では取得した値の書式を確認し、DateTimeクラスのcreateFromFormatメソッドを使ってパースし、書式を’Y/m/d’に変換している。