在php中使用“spreadsheet-reader”阅读date
我正在使用电子表格阅读器来读取一些.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); }
一切正常,但我遇到了date的问题。
使用以下格式的.xls
/ .xlsx
文件中有一列2015-02-10
将它们写入.csv
,此列的输出为2015201520152015-FebFeb-TueTue
。
我如何使用我上面发布的代码将其转换为.csv
,但将date保持为正确的格式( 2015-02-10
)?
提前致谢。
编辑:如果我手动更改date从01-01-2015
年1月1日到01-01-2015
(把年底在结束)date正确parsing。 如果没有办法将date保存为2015-01-01
,那么如何使用我在上面发布的代码将该行更改为正确的格式(年底)?
我知道我可以手动parsing一个date,但不使用上面的代码,因为当我调用$pReader = new SpreadsheetReader($pFilePath)
函数时,所有东西都被加载,并且没有办法只操作date。
使用date , strtotime
date( "dmY", strtotime( "2015-02-10" ) )
将会把你的date格式转换成10-02-2015
foreach ($pReader as $row) { // assuming date is stored on 3rd place , $row[2] $str = $row[0] ."+_+". $row[1]."+_+".date( "dmY", strtotime( $row[2] ) ); fputcsv($csv,explode("+_+",$str)); }