为什么 PHPexcel 在日期字段中插入单引号?
Why PHPexcel insert single quote in date field?
我正在尝试使用 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
我不知道如何在没有这个引号的情况下插入日期,希望你能帮助我。
setFormatCode
方法设置 Excel 将用于输出日期的格式,而不是设置 PHPExcel 的格式来解释日期。 Excel 电子表格以特定时间戳格式存储日期,可以使用 PHPExcel_Shared_Date
class 生成。它具有在各种日期格式和 Excel 预期格式之间进行转换的方法。
$objPHPExcel->getActiveSheet()->SetCellValue('A1',
PHPExcel_Shared_Date::PHPToExcel(time()+60*($start + 3)));
...应该可以解决问题。
还有一个决定:
$objPHPExcel->getActiveSheet()->SetCellValue('A1', '=NOW()+0.00001*60*'.$start);
这与 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。
我正在尝试使用 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
我不知道如何在没有这个引号的情况下插入日期,希望你能帮助我。
setFormatCode
方法设置 Excel 将用于输出日期的格式,而不是设置 PHPExcel 的格式来解释日期。 Excel 电子表格以特定时间戳格式存储日期,可以使用 PHPExcel_Shared_Date
class 生成。它具有在各种日期格式和 Excel 预期格式之间进行转换的方法。
$objPHPExcel->getActiveSheet()->SetCellValue('A1',
PHPExcel_Shared_Date::PHPToExcel(time()+60*($start + 3)));
...应该可以解决问题。
还有一个决定:
$objPHPExcel->getActiveSheet()->SetCellValue('A1', '=NOW()+0.00001*60*'.$start);
这与 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。