2012-09-11 70 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」);