Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > phpexcel - как получить дату


Автор: sagow 16.3.2011, 16:10
Здравствуйте.

Вопрос для тех кто юзал библиотеку PHPExcel

Столкнулся с проблемой при распарсивании файла xls.

Есть ячейка у которой формат, если открыть в excel обозначен как "все форматы" и содержит дату типа 17.11.2010  19:22:08

При получении ячейки с помощью библиотеки PHPExcel - каждая ячейка принимает тип string по умолчанию и соответственно дата меняет своё значение на 40499,807037037.

Изменения преобразования в другой тип ничему не привели, вернее тип меняется а значение остаётся прежним

Вот собственно и код
Код


require_once ...'/PHPExcel.php';
require_once ...'/IOFactory.php';
require_once ...'/Reader/Excel5.php';

$objReader = new PHPExcel_Reader_Excel5();
$this->excel = $objReader->load($this->filename);

$sheet = & $this->excel->getActiveSheet();

/* 
пробывал перед получением менять формат данных формат меняет а данные нет 
$sheet->getCellByColumnAndRow(2, 2)->setDataType(PHPExcel_Cell_DataType::TYPE_INLINE);
*/
$Data = $sheet->getCellByColumnAndRow(2, 2);     
$x = $Data->getValue();                                         

$datatype = $Data->getDataType();

echo $x.' - '.$datatype;                         // 40499,807037037 - s


Может кто сталкивался с этой проблемой, объясните пожалуйста, что я не так делаю или что надо сделать чтобы получить на выходе "17.11.2010  19:22:08"?

Автор: AImIk 18.11.2016, 15:49
Решить данную проблему можно следующим образом (в вашем случае): 
$Data = $sheet->getCellByColumnAndRow(2, 2);     
$x = $Data->getValue();  
$get_date = date('Y-m-d H:i:s', PHPExcel_Shared_Date::ExcelToPHP($x));

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)