2017-11-11 1 views
0

私はPHPアプリケーションをPHPアプリケーションで使用しています。 私はExcelワークシートから日付を取得するのに->getFormattedValue()を使用しました。PHPExcel - 強制フォーマットで日付を取得する

私はExcelファイルAを使用する場合、それは私に次の日付フォーマットできます:05/11/2016 をしかし、ファイルBと、それは次の形式を与える:この05-Nov-17ような形式を取得するために、日付形式を強制する方法05-Nov-17

いつも?どのようにPHPExcelからPHPに直接変換するのですか?

答えて

1

あなたは、MS Excelのシリアル化されたタイムスタンプ値を戻しますgetValue()方法、

$excelTimestampValue = $objPHPExcel->getActiveSheet() 
    ->getCell('A12') 
    ->getValue(); 

を用いて細胞からの生の値を返すことができます。つまり、1900年1月1日(または1904年1月1日、スプレッドシートファイルが使用しているカレンダーに応じて)からの日数を表す浮動小数点数です。そのタイムスタンプ値から、多くのオプションがあります:

タイムスタンプをunixタイムスタンプに変換します。これは、PHPのdate()関数を使用してフォーマットします。

$unixTimestamp = PHPExcel_Shared_Date::ExcelToPHP($excelTimestampValue); 
echo date('d-M-Y', $unixTimestamp); 

あなたがformat()メソッドを使用したいが、その後どのことができますフォーマット、PHPのDateTimeオブジェクトにそのタイムスタンプに変換します。

$dto = PHPExcel_Shared_Date::ExcelToPHPObject($excelTimestampValue); 
echo $dto->format('d-M-Y'); 

MS Excelの日付フォーマットマスクを使用して、文字列に直接フォーマットします。

echo PHPExcel_Style_NumberFormat::toFormattedString($excelTimestampValue, 'dd-mmm-yyyy'); 
+0

プログラムが誤って1904の代わりに1900カレンダーを使用すると、日付が失われる可能性はありますか? – abinax

+0

なぜ日付は失われますか? Excelファイルが1900年または1904年のカレンダーを使用するかどうかは、ファイルがロードされたときに識別され、PHPExcelに格納されるため、 'ExcelToPHP()'または 'ExcelToPHPObject()'を使用してUnixタイムスタンプまたはDateTimeオブジェクトに変換すると、どのカレンダーが使用され、それに応じて調整されます –

+0

PHPExcelはよく使う魔法使いを知っていますか?だから、恐れはありません。ありがとう – abinax

関連する問題