2012-09-11 71 views
10

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

但是,当我将它写入excel文件时,我无法将其写入日期格式,以便在excel上使用dd mmm yyyy格式。

因此,我试图写格式=日期(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。

这是否变得清晰?抱歉。

+0

请参阅此链接可能会帮你http://stackoverflow.com/questions/279917/format-text-in-excel-file-via-php – Hkachhia

+0

Мнепомог[вервыйответ] [1]ссоседнейтемы [1]:http://stackoverflow.com/questions/11119631/excel-date-conversion-using-php-excel – borodatych

回答

12

是获得来自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 
    ); 
+0

嗯,但这将单元格格式设置为NUMBER,它看起来像导出文件中的43073.4250578704 。但是在PHPExcel中也有单元格的DATE格式,但没有getDateFormat()函数。我不明白这一点。 –

+0

可能是因为我在Open Office中看到它? –

+0

与在OpenOffiice中打开没有关系....'PHPExcel_Style_NumberFormat :: FORMAT_DATE_XLSX14'是这个代码示例中设置的格式,它不是数字格式,而是日期格式 –

1

虽然目前还不清楚什么都在问,如果你正在寻找一个日期转换

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

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

1

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

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

这将导致11 Sep 2012

SQL SERVER: Date Format

8

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