2016-06-07 2 views
1

Я использую spreadsheet-reader прочитать некоторые .xls и .xlsx и конвертировать их в .csv.Проблема чтения даты с «электронными таблицами читалку» в PHP

Это мой упрощенный код:

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)?

Заранее спасибо.

EDIT: Если я вручную изменить даты от 2015-01-01 до 01-01-2015 (положить год в конце) даты обрабатываются корректно. Если нет возможности сохранить дату как 2015-01-01, как я могу изменить эту строку в правильном формате (год в конце), используя код, который я пишу выше?

Я знаю, что могу разобрать дату вручную, но не используя код выше, так как все загружается, когда я вызываю функцию $pReader = new SpreadsheetReader($pFilePath) и нет никакого способа, чтобы манипулировать только дату.

+0

Привет, Avion вы получили какое-либо решение для этого? – Kuttoozz

+1

Нет, @Kuttoozz, извините :( –

ответ

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

Пожалуйста, прочитайте вопрос. Я знаю, что могу разбирать дату с использованием этого метода, но мне некуда манипулировать датой в коде. Как и все. .xls' или '. xlsx' загружается, когда вы '$ pReader = new SpreadsheetReader ($ pFilePath)' –

+0

@Borja u должен открыть ваш массив строк, con cat все элементы массива и измененный элемент массива даты – Bender

+0

В массиве строк уже указана неправильная дата (' 2015201520152015-FebFeb-TueTue'), поэтому я не могу его разобрать. Мне нужно что-то сделать до или в '$ pReader = new SpreadsheetReader ($ pFilePath);'. –

Смежные вопросы