Формат даты PHPExcel

Я получаю вывод с сервера MS SQL в формате «2012-08-09 00:00:00» (без кавычек).

Однако, когда я пишу его в файл excel, я не могу записать его в формате даты, чтобы иметь форматирование dd mmm yyyy на excel.

В результате я попытался написать в формате = date (2012,08,09) в качестве формулы для соответствующих ячеек.

Но я не хочу выводить его как формулу, а значение '09 августа 2012 года 'с целостностью типа данных. Как мне это сделать? Или есть более простой метод?

Я прочитал документацию, но мне было непонятно, подумал я попросить разъяснений.

С уважением.


Извините, что недостаточно детально.

Я использую библиотеку 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 для eg = DATE (2012,8,9)

вместо того, чтобы появляться в качестве формулы, я хочу, чтобы excel распознал «2012-08-09 00:00:00» – это время и формат для dd mmm yyyy.

Это ясно? Сожалею.

Ваша проблема в получении даты от MS SQL как дата / время или установка даты Excel?

Существует целый раздел документации PHPExcel, в котором объясняется использование PHPExcel_Shared_Date::PHPToExcel($PHPDate) и PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0) вспомогательные методы для преобразования дат PHP в значение штампа даты в формате Excel, которое вы задали как значение ячейки, а затем примените маску формата номера одной из масок даты, такую ​​как 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 ); 

$ date = PHPExcel_Style_NumberFormat :: toFormattedString ($ data, "M / D / YYYY");

Хотя неясно, что спрашивают, если вы ищете преобразование даты

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

это даст дату в формате 09 августа 2012 года

Почему бы не позволить серверу форматировать для вас? Используйте этот запрос для форматирования даты

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

Это приведет 11 Sep 2012

SQL SERVER: формат даты