gpt4 book ai didi

php - 使用 PHPExcel 从 xlsx 转换为 csv 期间更改日期格式

转载 作者:行者123 更新时间:2023-12-04 19:49:01 26 4
gpt4 key购买 nike

我正在使用 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 的单元格格式对话框显示“以星号开头的日期格式响应为操作系统指定的区域日期和时间设置的更改。”

是否有比逐个单元格搜索日期字段并覆盖其格式更优雅的解决方案?

最佳答案

我一直在寻找一种方法来为所有日期单元格设置格式代码,而不必遍历所有单元格。我从来没有找到那个解决方案。这是我最终使用的。

$filePath = "fromFile.xlsx"; 
$csvPath = "toFile.csv";

PHPExcel_Settings::setZipClass(PHPExcel_Settings::PCLZIP);
$reader = PHPExcel_IOFactory::load( $filePath );

foreach( $reader->getActiveSheet()->getRowIterator(1) as $row ){
foreach( $row->getCellIterator() as $cell ){
if( PHPExcel_Shared_Date::isDateTime($cell)){
$cell->getStyle()->getNumberFormat()->setFormatCode("mm/dd/yyyy" );
}
}
}

$writer = PHPExcel_IOFactory::createWriter( $reader, 'CSV' );
$writer->setDelimiter(",");
$writer->setEnclosure('"');
$writer->setSheetIndex(0);

$writer->save( $csvPath );

关于php - 使用 PHPExcel 从 xlsx 转换为 csv 期间更改日期格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52747359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com