我尝试使用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
我不知道如何在没有此引号的情况下插入日期,希望您能帮助我。
答案 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。