为什么PHPexcel在日期字段中插入单引号?

时间:2016-02-27 17:50:06

标签: php phpexcel

我尝试使用PHPExcel将日期插入到单元格中。这是我的代码:

    include('xlsx/Classes/PHPExcel.php');
    include('xlsx/Classes/PHPExcel/Calculation.php');
    include('xlsx/Classes/PHPExcel/Cell.php');
    $objPHPExcel = new PHPExcel();
    $start = 3;
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getNumberFormat()->setFormatCode('DD.MM.YYYY');
    $objPHPExcel->getActiveSheet()->SetCellValue('A1', date('d.m.Y', time()+60*($start + 3)));
    $objPHPExcel->getActiveSheet()->getStyle('A1')->getNumberFormat()->setFormatCode('DD.MM.YYYY');
    $objWriter = new PHPExcel_Writer_Excel5($objPHPExcel);
    $objWriter->save('text.xls');

但是,PHPexcel选择了正确的格式,但它用单引号

插入日期
'27.02.2016

代替

27.02.2016

我不知道如何在没有此引号的情况下插入日期,希望您能帮助我。

3 个答案:

答案 0 :(得分:4)

setFormatCode方法设置Excel将用于输出日期的格式,而不是设置PHPExcel的格式来解释日期。 Excel电子表格以特定时间戳格式存储日期,该格式可以使用PHPExcel_Shared_Date类生成。它具有在各种日期格式和Excel的预期格式之间进行转换的方法。

$objPHPExcel->getActiveSheet()->SetCellValue('A1',
    PHPExcel_Shared_Date::PHPToExcel(time()+60*($start + 3)));

......应该这样做。

答案 1 :(得分:0)

还有一个决定:

  $objPHPExcel->getActiveSheet()->SetCellValue('A1', '=NOW()+0.00001*60*'.$start);

答案 2 :(得分:0)

这与 2021 年 PHPSpreadsheet 中的相同,但以下解决方案将解决此问题:

$phpSpreadsheet->getActiveSheet()->setCellValue('H'.$start,'=DATE('.date('Y,m,d',strtotime($yourtime)).')');

您显然不必使用 strtotime 而是任何 Unix 日期戳或格式,只要它的 Y,m,d Excel 日期作为输入格式 (https://exceljet.net/excel-functions/excel-date-function)

该解决方案利用内置的 XLSX 日期函数,而不是依赖 PhpSpreadsheet。