【发布时间】:2018-10-10 19:19:32
【问题描述】:
我正在使用 PHPExcel 将各种 xls 和 xlsx 电子表格转换为 csv 文件。原始电子表格具有各种格式的日期,但我需要它们在 csv 文件中保持一致的格式。
以下是转换代码的相关部分。
$filePath = "fromFile.xlsx";
$csvPath = "toFile.csv";
PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
$reader = PHPExcel_IOFactory::load( $filePath );
$writer = PHPExcel_IOFactory::createWriter( $reader, 'CSV' );
$writer->setDelimiter(",");
$writer->setEnclosure('"');
$writer->setSheetIndex(0);
$writer->save( $csvPath );
我看到原始电子表格中格式为 mm/dd/yyyy 的日期被转换为 mm-dd-yy。我翻阅了文档和代码,寻找设置该格式的位置,但我找不到明确的答案。
我的测试文件使用 excel 的默认短日期格式 *3/14/2012。 对于在 Excel 文件中读取为“12/20/2018”的日期,我一直得到“12-20-18”。
编辑:
建议的问题答案副本如何在特定单元格上设置格式。在我的情况下,格式已经设置,但它们不能正常工作。
我发现问题是特定于“*mm/dd/yyyy”格式的。出于某种原因,这种特定格式在写入 csv 文件时会更改为 mm-dd-yy。
Excel 的“单元格格式”对话框显示“以星号开头的日期格式会响应为操作系统指定的区域日期和时间设置的更改。”
有没有比逐个单元格搜索日期字段并覆盖其格式更优雅的解决方案?
【问题讨论】: