编辑XLS有时会更改日期格式

时间:2013-12-13 08:40:16

标签: phpexcel xls date-formatting

我正在服务器上使用PHPExcel从php编辑XLS模板,在我填写数据后,保存文件并将其发送给用户。有时,当用户在编辑XSL文件中的内容后提交表单时,会出现问题。有时会发生的是日期格式的变化。 enter image description here

不知道造成这种情况的原因,无论是操作系统还是客户端用于编辑文件,还有什么办法可以防止这种日期格式在所有三个单元格中保持不变?提前谢谢!

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);
}

编辑:如果我无法阻止更改日期格式,我至少应该能够将日期作为日期对象来读取格式。可以这样做吗?

1 个答案:

答案 0 :(得分:1)

我希望您不是使用Y-m-d格式来编写日期,而是将实际的Excel序列化日期/时间戳值写入单元格,并设置数字格式掩码以设置日期格式。这是日期处理的预期方法。写一个Y-m-d格式化的值正在写一个人类可能解释为日期的字符串值,但它不是MS Excel的日期...如果MS Excel确实将其识别为日期,它可能会将其转换为序列化的日期/时间戳值并选择自己的格式,这通常是特定于语言环境的。

但是,保护这些单元格无疑是阻止用户活动更改值和/或格式化的一种方法