これに似た疑問がたくさんあることは知っていますが、実際に助けられたことはありません。 私はExcelのファイルにセルを持っていますが、それは私が読む必要があります。phpexcelの日付が間違った形式を読み取っています
し、Excelファイル内のフォーマット私は、セルを読み取るためにシート名とセルを取得する機能でそれを持っている私のPHPコードでDate Format In Excel
以下のようなものです。私も(getFormattedValueでこれを試してみました)と同じ結果に
を持って
$cellDate = $xls->getSheetByName($sheet)->getCell($cell)->getValue();
私はその後、私はPHPでこれをエコーするとき、それは示してこの
$format = $xls->getSheetByName($sheet)->getCell($cell)->getStyle()->getNumberFormat()->getFormatCode();
でフォーマットを取得します日付は
13/4/2015
と表示されます。それはDD-MM-YYYYとして
を示し
mm-dd-yyyy
私は今、私はPHPExcelで利用可能なすべての機能を使用して試してみたが、それは結果が正しくないと、まだだこれらのY-M-Dフォーマットを取得する必要があります。
が複数の形式で複数のセルがあると私は私は本当にこれを必要とし、I」
$objPHPExcel->getActiveSheet()
->getStyle('A1')
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
を使用してみました、それ自体で
を理解して、これを必要とするので、私は形式をハードコーディングすることはできませんすでに1週間で無駄になってしまった。
PHPEXCELに、セル内の日付がY-m-d形式であることを解析するように指示することはありますか?
UPDATE
私は戻って、私が書いた機能をチェックし、コメントを通読たので、私が見つかりました。つまり、それがここで間違ったフォーマットを解析していますExcelでフォーマットされています[さえ]という細胞の1そのケースは一般的なフォーマットでした。
私はgetValue()とgetFormattedValue()の値を得て、それらが同じでない場合、これらの2つを比較して、正しくフォーマットされていることを意味し、PHPExcelを使用して日付を取得できます。
しかし、(ただし、常にですが)。マイクロソフトとその優れたおかげで、私はまだ2016年2月2日と1月2日とは違うことができません!永遠に疑問が残っています。
私の唯一の推奨は、Excelフォーマットを信頼しないことです!
「MicrosoftとExcelのおかげで」....厳密に言えば、MicrosoftやExcelはここでは誤りではありません。 MS Excelに内部シリアル化された日付/時刻値を使用させるのではなく、文字列値として日付を入力したユーザーです –