【问题标题】:PHPExcel String to TimePHPExcel字符串到时间
【发布时间】:2016-09-19 04:42:57
【问题描述】:

我创建了一个 Excel 电子表格。在第二列中,我有像 0:11:232:03:33 这样的值,价值数千行。使用 PHP 我将格式设置为:

    $sheet->getStyle($colRange)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);

但单元格仍然只是字符串。如果您将单元格从 0:11:22 编辑为 0:11:33 之类的其他内容,则该单元格将转换为时间。在顶部它从0:11:220:11:33 AM 这种自动添加 AM 似乎是巨大的变化,然后我可以对文件做我想做的事情。

如何将数千个单元格从 0:11:22 更改为 0:11:22 AM

【问题讨论】:

    标签: php time phpexcel


    【解决方案1】:

    这是一篇旧帖子,但也许它会对某人有所帮助......

    $objPHPExcel->getActiveSheet()
    ->setCellValue('E5', '=TEXT(TIMEVALUE("'. $the_str_Time . '"),"[h]:mm")');
    

    TIMEVALUE 函数将字符串转换为时间, TEXT 函数为它们提供了所需的格式。 我的是测量时间超过 24 小时

    【讨论】:

      【解决方案2】:

      这是因为您必须将日期/时间转换为 MS Excel 序列化时间戳,并将该值存储在单元格中;如PHPExcel Documentation 中所述并在/Examples 文件夹中的02types.php 中显示。

      一旦您存储了实际的 MS Excel 时间戳值,您就可以对其应用格式

      $objPHPExcel->getActiveSheet()->setCellValue('A12', 'Date/Time')
          ->setCellValue('B12', 'Time')
              ->setCellValue('C12', PHPExcel_Shared_Date::PHPToExcel( $dateTimeNow ));
      $objPHPExcel->getActiveSheet()
          ->getStyle('C12')
          ->getNumberFormat()
          ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4);
      

      【讨论】:

      • 嗨,马克,我切换到 FORMAT_DATE_TIME8,你也是正确的,因为它需要采用时间戳格式。这大约是他们想要的方式的 90%。现在唯一的事情是,如果您稍微更改 0:01:02 并且 excel 将其更改为上午 12:01:03 - 他们喜欢这样。但是通过编程进行操作会导致它在 Excel 公式栏中显示“09/20/2016 12:01:03 AM”,而不仅仅是他们想要的时间......我知道你回答了这个问题,但你有关于如何不显示日期部分的任何想法,例如手动更改时间时发生的情况?
      • 而且,我还通过删除 Excel 日期时间的日期部分修复了“09/20/2016 12:01:03 AM”问题:12345.6789 -> 0.6789 $val = $objPHPExcel->getActiveSheet ()->getCell($cell)->getValue(); $timestamp = DateTime::createFromFormat('H:i:s', $val); $excelTime = PHPExcel_Shared_Date::PHPToExcel($timestamp); $excelTime = $excelTime - (int)$excelTime; $objPHPExcel->getActiveSheet()->setCellValue($cell, $excelTime);
      【解决方案3】:

      试试这个

      $sheet
          ->getStyle($colRange)
          ->getNumberFormat()
          ->setFormatCode('[$-C09]d mmm yyyy;@');
      

      【讨论】:

      • 嗨 Denny,感谢您抽出宝贵的时间 - 我需要及时,而不是日期格式。我确实尝试将您的代码与正确格式化时间戳的时间格式一起使用,但我的问题首先不是使用时间戳......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-02
      • 2021-03-10
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多