【问题标题】:PHPExcel How to set a date in cellPHPExcel如何在单元格中设置日期
【发布时间】:2014-04-29 18:56:30
【问题描述】:

我需要在一个单元格中输入一个日期,当我查看它的格式时,它看起来像 *14/03/01。

我输入的值是一个简单的字符串,因此当我得到计算值时会忽略我输入的日期,因为它会在日历(嗯,包含实际年份的所有日期的列)中比较我输入的日期输入日期以设置与输入日期相对应的适当值。

有没有办法将 Excel 期望的格式放入?

【问题讨论】:

    标签: date cell phpexcel xls


    【解决方案1】:

    MS Excel 使用时间戳值作为日期,然后将其屏蔽以进行显示;不是格式化的字符串。

    来自/Examples 文件夹中的02types.php

    $dateTimeNow = time();    //  Get a Unix/PHP timestamp value for the date/time
    $objPHPExcel->getActiveSheet()           // Convert Unix timestamp to a MS Excel 
        ->setCellValue('A9', 'Date/Time')    //  serialized timestamp, and set that as 
        ->setCellValue('B9', 'Date')         //  the cell value
        ->setCellValue(
            'C9', 
            PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow )
        );
    $objPHPExcel->getActiveSheet()        // Format as date and time
        ->getStyle('C9')
        ->getNumberFormat()
        ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
    

    PHPExcel_Shared_Date::PHPToExcel() 方法将采用 Unix 时间戳或字符串(格式类似于您可能传递给 strtotime() 的格式)并将其转换为 MS Excel 时间戳值;而setFormatCode() 调用将该单元格设置为格式掩码,以向 MS Excel 指示该单元格包含应显示为日期和/或时间的值

    【讨论】:

    • 我现在正在做的过程是这样的:$date = $start_date->getTimestamp(); $mainSheet = $objPHPExcel->getSheet(0); $mainSheet->setCellValue('B1', PHPExcel_Shared_Date::PHPToExcel($date)); $mainSheet->getStyle('B1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY); 但还是不行。
    • 请解释“不工作”。 $start_date->getTimestamp(); 的值是多少?实际存储在单元格 B1 中的是什么?它应该是一个浮点数(值 41720.00 是今天的日期,默认日历为 1900 年).... 设置后该单元格上的简单 getValue() 应该会告诉您。
    • 是的,它是一个浮点数41720.618009259
    • 所以值设置正确;并且getFormattedValue() 调用应返回字符串“2014-03-22”(格式掩码设置为 FORMAT_DATE_YYYYMMDD2)。如果使用 Excel2007 或 Excel5 Writer 保存,打开文件时在 MS EXcel 中看到什么?
    • 我使用 Excel5 生成了 excel,在那个单元格中我得到 22/03/2014 15:25:27问题是时间,有没有办法不包括时间?
    【解决方案2】:
    $duree = '08:00:00';
    PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_AdvancedValueBinder() );
    $sheet->setCellValueByColumnAndRow($row, $num, $duree);
    $sheet->getStyleByColumnAndRow($row, $num)
          ->getNumberFormat()
          ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME3);
    

    在我的牢房里,我可以看到 08:00

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-10
      相关资源
      最近更新 更多