ホーム > PHPExcel_Style_NumberFormat (全2件)
  • 日付セルの値を取得する

    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’に変換している。

  • セルの表示形式を変更する

    カラム’A1’の表示形式に’#,##0’を設定する

    /* A1形式でセルを指定する場合 */
    $sheet->getStyle( 'A1' )->getNumberFormat()->setFormatCode( '#,##0' );
    
    /* カラム番号と行番号でセルを指定する場合 */
    $sheet->getStyleByColumnAndRow( $column, $row )->getNumberFormat()->setFormatCode( '#,##0' );
    

    セルの書式設定(オブジェクト)をgetStyleメソッド(またはgetStyleByColumnAndRowメソッド)で取得し、そのgetNumberFormatメソッドで表示形式(オブジェクト)を取得。setFormatCodeメソッドで表示形式を設定する。指定できる表示形式はExcelと同じで、%表示にする場合は’0.00%’のように「0.」の後に小数点有効桁数分「0」を指定し最後に「%」を付ける。なお登録済みの表示形式は、PHPExcel_Style_NumberFormatクラスを参照。