MS SQLサーバーから「2012-08-09 00:00:00」(引用符なし)形式の出力を取得しています。
ただし、Excelファイルに書き込む場合、日付形式で書き込むことができず、Excelでdd mmm yyyyの形式にすることができません。
その結果、それぞれのセルに数式として= date(2012,08,09)の形式で書き込もうとしました。
しかし、それを数式として出力するのではなく、データタイプの整合性をそのままにして、値「2012年8月9日」を出力します。どうすればよいですか?またはより簡単な方法はありますか?
ドキュメンテーションを読みましたが、明確にすることはできないと思いました。
よろしく。
詳細が不十分でごめんなさい。
PHPExcelライブラリを使用しています。
私のSQL配列から、私は以下を使用します:
$t_year = substr($xls_column_datas["colname"],0,4);
$t_month = substr($xls_column_datas["colname"],5,2);
$t_day = substr($xls_column_datas["colname"],8,2);
$t_format = $t_year . "," . $t_month . "," . $t_day ;
$t_format = '=date('.$t_format.')';
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($data_column_num, $data_row_num, $t_format );
$objPHPExcel->getActiveSheet()->getStyleByColumnAndRow($data_column_num, $data_row_num)->getNumberFormat()->setFormatCode('[$-C09]d mmm yyyy;@');
私のExcel出力では、たとえば列A2が表示されます。 = DATE(2012,8,9)
数式として表示するのではなく、Excelで「2012-08-09 00:00:00」が日付時刻であることを認識し、dd mmm yyyyにフォーマットします。
これは明らかになっていますか?ごめんなさい。
MS SQLから日付/時刻として日付を取得するか、Excelの日付を設定するのに問題がありますか?
PHP日付をExcelの日時スタンプに変換するためのPHPExcel_Shared_Date::PHPToExcel($PHPDate)
およびPHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)
ヘルパーメソッドの使用を説明するPHPExcelドキュメントのセクション全体があります。セル値として設定した値、次にそのセルにPHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2
などの日付マスクの1つの数値書式マスクを適用します
の代わりに
$t_year = substr($xls_column_datas["colname"],0,4);
$t_month = substr($xls_column_datas["colname"],5,2);
$t_day = substr($xls_column_datas["colname"],8,2);
$t_format = '=date('.$t_format.')';
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($data_column_num, $data_row_num, $t_format );
$objPHPExcel->getActiveSheet()->getStyleByColumnAndRow($data_column_num, $data_row_num)->getNumberFormat()->setFormatCode('[$-C09]d mmm yyyy;@');
設定してみてください
$t_year = substr($xls_column_datas["colname"],0,4);
$t_month = substr($xls_column_datas["colname"],4,2); // Fixed problems with offsets
$t_day = substr($xls_column_datas["colname"],6,2);
$t_date = PHPExcel_Shared_Date::FormattedPHPToExcel($t_year, $t_month, $t_day);
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(
$data_column_num, $data_row_num, $t_date
);
$objPHPExcel->getActiveSheet()
->getStyleByColumnAndRow($data_column_num, $data_row_num)
->getNumberFormat()->setFormatCode(
PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14
);
$ date = PHPExcel_Style_NumberFormat :: toFormattedString($ data、 "M/D/YYYY");
何が求められているのかは不明ですが、日付変換を探しているなら
// convert old date string to YYYYmmdd format
$date = date('d M Y', strtotime($old_date));
これは、2012年8月9日の形式で日付を出力します
サーバーにフォーマットを任せてみませんか?このクエリを使用して日付をフォーマットします
SELECT convert(varchar(15), getdate(), 106)
これは11 Sep 2012
になります