Использование PHPExcel для импорта содержимого файла Excel в базу данных MySQL (проблемы с форматированием) - PullRequest
1 голос
/ 23 марта 2011

Я импортирую содержимое файла Excel 2007 в базу данных MySQL, но поле даты в электронной таблице имеет пользовательский формат даты (dd-mmm-yy). Я не могу изменить это на текст, потому что клиент будет загружать его, поэтому это невозможно. Когда я импортирую содержимое файла, он вставляет дату в виде числа, например, 40978 вместо 12 января 2009 года. Я знаю, что изменение формата таблицы базы данных поля не будет иметь никакого эффекта, поскольку его форматирование превосходит, но кто-нибудь знает способ обойти это? Без изменения формата электронной таблицы?

Ответы [ 2 ]

4 голосов
/ 23 марта 2011

Используйте встроенные в PHPExcel методы преобразования, такие как PHPExcel_Shared_Date :: ExcelToPHP () или PHPExcel_Shared_Date :: ExcelToPHPObject (), чтобы преобразовать значения даты в отметку времени PHP / Unix или объект DateTime PHP соответственно.отформатируйте это в строку формата гггг-мм-дд, используя соответствующие функции PHP date () или $ DateTimeObject-> format ().

EDIT

$excelDateValue = 40978;

$PHPTimeStamp = PHPExcel_Shared_Date::ExcelToPHP($excelDateValue);
echo $PHPTimeStamp,'<br />';
echo date('Y-m-d',$PHPTimeStamp),'<br />';

или

$excelDateValue = 40978;

$PHPDateTimeObject = PHPExcel_Shared_Date::ExcelToPHPObject($excelDateValue);
echo $PHPDateTimeObject->format('Y-m-d'),'<br />';

Кстати, отметка даты в Excel 40978 - 10 марта 2012 года (на основе календаря Excel Windows 1900) или 11 марта 2016 года (на основе календаря Excel Mac 1904).12 января 2009 года отметка времени в Excel составит 39825 (на основе календаря Excel Windows 1900).

0 голосов
/ 23 марта 2011

Использование кода thar преобразует строковую дату в дату в формате mysql. Что-то вроде:

$ma=array("jan"=>"-01-","feb"=>"-02-","mar"=>"-03-", etc );
$month=$ma[strtolower(substr($exceldate,3,3))];
$newdate="20".substr($exceldate,7,2).$month.substr($exceldate,0,2);
...