我正在服务器上使用PHPExcel从php编辑XLS模板,在我填写数据后,保存文件并将其发送给用户。有时,当用户在编辑XSL文件中的内容后提交表单时,会出现问题。有时会发生的是日期格式的变化。
不知道造成这种情况的原因,无论是操作系统还是客户端用于编辑文件,还有什么办法可以防止这种日期格式在所有三个单元格中保持不变?提前谢谢!
private function setDateInCell(\PHPExcel_Cell $cell, \DateTime $date)
{
$excelDate = \PHPExcel_Shared_Date::PHPToExcel($date);
$cell->setValue($excelDate);
$cell->getStyle()->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2);
}
编辑:如果我无法阻止更改日期格式,我至少应该能够将日期作为日期对象来读取格式。可以这样做吗?
答案 0 :(得分:1)
我希望您不是使用Y-m-d
格式来编写日期,而是将实际的Excel序列化日期/时间戳值写入单元格,并设置数字格式掩码以设置日期格式。这是日期处理的预期方法。写一个Y-m-d
格式化的值正在写一个人类可能解释为日期的字符串值,但它不是MS Excel的日期...如果MS Excel确实将其识别为日期,它可能会将其转换为序列化的日期/时间戳值并选择自己的格式,这通常是特定于语言环境的。
但是,保护这些单元格无疑是阻止用户活动更改值和/或格式化的一种方法