PHPExcel日期格式

时间:2012-09-11 04:52:52

标签: php phpexcel

我在'2012-08-09 00:00:00'(不带引号)格式中从MS SQL服务器获取输出。

然而,当我把它写到excel文件时,我无法用日期格式写它以在excel上进行dd mmm yyyy格式化。

结果我试着用format = date(2012,08,09)作为相应单元格的公式。

但我不想将其作为公式输出,而是将值'09 Aug 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列,例如= DATE(2012,8,9)

而不是显示为公式我希望excel识别'2012-08-09 00:00:00'是一个日期时间并将其格式化为dd mmm yyyy。

这是否清楚了?遗憾。

4 个答案:

答案 0 :(得分:13)

问题是从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
    );

答案 1 :(得分:8)

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

答案 2 :(得分:1)

虽然目前还不清楚要问的是什么,如果您正在寻找日期转换

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

这将输出日期为2012年8月9日的格式

答案 3 :(得分:1)

为什么不让服务器为您格式化?使用此查询格式化日期

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

这将导致11 Sep 2012

<强> SQL SERVER: Date Format