在php

时间:2016-06-07 08:50:43

标签: php excel csv

我正在使用 spreadsheet-reader 阅读一些.xls.xlsx并将其转换为.csv

这是我的简化代码:

require_once(dirname(__FILE__) . '/../ext/spreadsheet-reader/SpreadsheetReader.php');
require_once(dirname(__FILE__) . '/../ext/spreadsheet-reader/php-excel-reader/excel_reader2.php');

$pCsvPath =  Config::$generatedCSVPath . "/" . str_replace(array(".xlsx", ".xls"), ".csv", $pFileName);

$csv = fopen($pCsvPath, "w");

$pReader = new SpreadsheetReader($pFilePath);

// Read only the first sheet
$pSheets = $pReader -> Sheets();
$pReader -> ChangeSheet(0);

foreach ($pReader as $row)
{
    fputcsv($csv, $row);
}

一切都很好,但是我对日期有疑问。

.xls / .xlsx个文件中有一列,格式为2015-02-10 当我将它们写入.csv时,此列的输出为2015201520152015-FebFeb-TueTue

如何使用上面发布的代码将其转换为.csv,但将日期保持为正确的格式(2015-02-10)?

提前致谢。

编辑:如果我手动将日期从2015-01-01更改为01-01-2015(将年份放在最后),则会正确解析日期。如果无法将日期保存为2015-01-01,如何使用上面发布的代码将该行更改为正确的格式(年末)?

我知道我可以手动解析日期,但不能使用上面的代码,因为当我调用$pReader = new SpreadsheetReader($pFilePath)函数时所有内容都被加载,并且无法仅操作 日期。

1 个答案:

答案 0 :(得分:0)

使用date , strtotime

date( "d-m-Y", strtotime( "2015-02-10" ) )

会将您的日期格式转换为10-02-2015

foreach ($pReader as $row)
{

// assuming date is stored on 3rd place , $row[2]

$str = $row[0] ."+_+". $row[1]."+_+".date( "d-m-Y", strtotime( $row[2] ) );


           fputcsv($csv,explode("+_+",$str));
}