簡體   English   中英

PHPExcel將字符串日期放入.xls

[英]PHPExcel putting string date into .xls

家伙。 我在DB的日期為字符串“d / m / Y”。 當我把這個日期放到Excel中時,它會顯示正常日期,如03/10/2000,但是當我點擊單元格時,它會顯示值'03/10/2000 所以,值是字符串,而不是我所需的日期。

所以,我將日期從DB轉換為PHP日期對象,並確保var_dump日期是具有該代碼的Date對象:

$date = date_create_from_format('d/m/Y', $array[$i-20]['Date']);
              $date->format('m/d/Y');

但無論如何,生成的.xls中的值都是'之前的值。

它出現的原因以及如何解決?

MS Excel將日期存儲為序列化時間戳,即自1900年1月1日(或1904年1月1日,如果使用Mac日歷)以來的天數。 要將值存儲為日期(而不僅僅是字符串),您需要將字符串日期轉換為序列化時間戳,然后設置單元格的格式掩碼。

$date = date_create_from_format('d/m/Y', $array[$i-20]['Date']);
$excelDate = PHPExcel_Shared_Date::PHPToExcel($date);

將$ excelDate設置為單元格值

$objPHPExcel->getActiveSheet()->setCellValue('C11', $excelDate );

然后將格式掩碼應用於該單元格

$objPHPExcel->getActiveSheet()
    ->getStyle('C11')
    ->getNumberFormat()
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);

`/ Examples`文件夾中02types.php示例腳本演示了這一點

編輯

您可以(並且更有效)將樣式應用於一系列單元格:只需在getStyle()調用中指定范圍即可。

$objPHPExcel->getActiveSheet()
    ->getStyle('C11:C200')
    ->getNumberFormat()
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);

要獲取可用格式的詳細信息:PHPExcel內置了許多預定義的格式,這些格式可以在Classes / PHPExcel / Style / NumberFormat.php中找到 但是,您不僅限於這組格式; 並且(與MS Excel允許您定義“自定義”格式的方式相同)您可以使用幾乎任何可用於MS Excel規則來傳遞定義格式的字符串(例如“d-mmm-yyyy”) 數字格式掩碼作為格式

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM