PhpSpreadsheetでエクセルのテンプレートを読み込み、日付のユーザ定義書式(日付:元号○○年○○月○○日(曜日))が
設定されているセルに日付(yyyy/mm/ddの形式)をセットしたが、出力されたエクセルを開くと「yyyy/mm/dd」のまま
表示されてしまいます。
但し、書式は「日付:元号○○年○○月○○日(曜日)」で定義されており、開いた後、該当のセルをダブルクリックして
Enterを押すと「日付:元号○○年○○月○○日(曜日)」の形式で表示されます。
原因が判らない為、元々セットされている書式と同じ書式を、データをセットした直後に再セットするよう、コードを
追加して試してみましたが、それでも結果が変わらない状況です。
情報収集してみたところ、PHPExcelで同様の現象で対処した方の記事を見つけ、それによると以下のコードでセルに
シリアル値で日付をセットするようにしたところ、うまく出来たとの記事がありました。
PHP
1$sheet->setCellValue("A1",PHPExcel_Shared_Date::PHPToExcel(new DateTime(日付をセット)));
但し、PHPExcelでのコードなので、PhpSpreadsheetで該当する情報を探してみましたが、見つからない状況です。
そこで、日付をシリアル値に変換するコードを新たに追加し、試してみましたが、それでも結果が変わりませんでした。
PhpSpreadsheetでの日付に関する書式の事で、アドバイス等を頂けると助かります。
一応、下記に試してみたコードを載せておきます。
よろしくお願い致します。
PHP
1// 日付のみをセルにセット($date_no2に「yyyy-mm-dd hh:mm:ss」でセットされる) 2$sheet->setCellValue('K5', date('Y/m/d', strtotime(date($date_no2))));
PHP
1// 日付をセルにセットした後、書式をセット($date_no2に「yyyy-mm-dd hh:mm:ss」でセットされる) 2$sheet->setCellValue('K5', date('Y/m/d', strtotime(date($date_no2)))); 3$sheet->getCell('K5')->getStyle()->getNumberFormat()->setFormatCode('"日付:"gggyy"年"mm"月"dd"日("aaa"曜日)"');
PHP
1// 日付をシリアル値変換してセルにセットした後、書式をセット($date_no2に「yyyy-mm-dd hh:mm:ss」でセットされる) 2$sagyodate = round(strtotime(date($row[2]))/60/60/24)+25569+9/24; 3$sheet->setCellValue('K5', $sagyodate); 4$sheet->getCell('K5')->getStyle()->getNumberFormat()->setFormatCode('"日付:"gggyy"年"mm"月"dd"日("aaa"曜日)"');
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。