12

「2012-08-09 00:00:00」(引用符なし) 形式で MS SQL サーバーから出力を取得しています。

ただし、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出力では、たとえば= DATE(2012,8,9)の列A2が表示されます

数式として表示するのではなく、「2012-08-09 00:00:00」を日付時刻として認識し、dd mmm yyyy にフォーマットするように Excel に指示します。

これは明らかになっていますか?ごめん。

4

4 に答える 4

13

MS SQL から日付/時刻として日付を取得する、または Excel の日付を設定する際に問題がありますか?

PHPExcel_Shared_Date::PHPToExcel($PHPDate)PHP 日付をセル値として設定した Excel 日時スタンプ値に変換するためのおよびヘルパー メソッドの使用を説明する PHPExcel ドキュメントのセクション全体がありPHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)、日付マスクのいずれかの数値書式マスクを適用します。PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2その細胞など

それ以外の

$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
    );
于 2012-09-11T06:39:27.893 に答える
1

何を求めているのかは不明ですが、日付変換をお探しの場合

 // convert old date string to YYYYmmdd format
    $date = date('d M Y', strtotime($old_date));

これは、2012年8月9日の形式で日付を出力します

于 2012-09-11T05:08:39.640 に答える
1

サーバーにフォーマットを任せてみませんか? このクエリを使用して日付をフォーマットします

SELECT convert(varchar(15), getdate(), 106) 

これにより、11 Sep 2012

SQL サーバー: 日付形式

于 2012-09-11T05:16:50.377 に答える