PHPExcelを使用してExcelから日付を取得しようとしています。しかし、私は日付を取得していない、私は1970年から秒ではない文字列の値を取得しています。私が試してみましたPHPExcelライブラリを使用してExcelから日付を取得する方法
コードは
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
PHPExcelを使用してExcelから日付を取得しようとしています。しかし、私は日付を取得していない、私は1970年から秒ではない文字列の値を取得しています。私が試してみましたPHPExcelライブラリを使用してExcelから日付を取得する方法
コードは
$InvDate=trim($excel->getActiveSheet()->getCell('B' . $i)->getValue());
てみ使用
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if(PHPExcel_Shared_Date::isDateTime($cell)) {
$InvDate = date($format, PHPExcel_Shared_Date::ExcelToPHP($InvDate));
}
P.S.です
@DiegoDD:日付の希望の形式は$形式である必要があります。例えば:日付の
$InvDate = date($format = "Y-m-d", PHPExcel_Shared_Date::ExcelToPHP($InvDate));
、のgetValue()日付/時間のためのエクセルシリアル化されたタイムスタンプ値であるfloatを返す必要があります...私はそれはあなたのトリム()は、文字列にキャストだだと思います。実際の値は、1900年1月1日(またはスプレッドシートが使用しているカレンダーに応じて1/1/1904)からの日数です。
getValue()の代わりにgetFormattedValue()またはgetCalculatedValue()を呼び出すと、セルの数値書式マスクに従って人間が読める文字列として書式設定された日付が返されます。
セルゲイの解決策はセルに日付/時刻の数値書式マスクがあるかどうかをテストし、適切なヘルパーメソッドを呼び出してそのExcelシリアライズされたタイムスタンプをUnixタイムスタンプに変換し、通常のPHP日付関数を使用して$ formatの値。ライブラリー、PhpOfficeの新バージョンではPHPのDateTimeオブジェクト
にエクセルシリアル化されたタイムスタンプを変換する同様のヘルパーメソッドPHPExcel_Shared_Date :: ExcelToPHPObject()があります、これを処理する関数はので、新しいコード形式がすべきexcelToDateTimeObjectですbe:
$cell = $excel->getActiveSheet()->getCell('B' . $i);
$InvDate= $cell->getValue();
if (PhpOffice\PhpSpreadsheet\Shared\Date::isDateTime($cell)) {
$InvDate = PhpOffice\PhpSpreadsheet\Shared\Date::excelToDateTimeObject($InvDate);
}
これが2か月前に見つかった場合のみ!ありがとう! – rafi
優秀:)ありがとう – mrfazolka
最後の数日からうまく動作してくれてありがとうございました –