2014-08-30 3 views
1

Я использовал PHPExcle для импорта файла excel. Я обнаружил, что не могу получить правильное значение из рассчитанной ячейки. Вычисленное значение: 8月27日 (дата на китайском языке) в этой ячейке, это означает 27 August на английском языке. Ячейка ссылается на A1 в Sheet2 и A1 в Sheet2 ссылается на ячейку в другом файле excel.получить расчетную ячейку даты в PHPExcel

Я уже пробовал несколько способов, как показано ниже:

echo $cell->getValue();    // =Sheet2!A2 
    echo $cell->__toString();    // =Sheet2!A2 
    echo $cell->getCalculatedValue();  // #REF! 
    echo $cell->getFormattedValue();  // #REF! 
    echo $cell->getOldCalculatedValue(); // 41878 (a strange result, I don't know what it means) 

Как я могу получить правильное значение (8月27日) в PHPExcel?

ответ

3

41878 Результат, полученный из вызова getOldCalculatedValue();, представляет собой сериализованную дату/метку MS Excel.

В MS Excel значение даты или времени измеряется как количество дней с 1 января 1900 года (или 1 января 1904 года, если используется календарь Mac 1904) и подразумевается, что оно хранится в виде числа. Это только маска формата номера ячейки, которая отображает ее как дату и/или время.

41878 - это номер, который соответствует 27 августа 2014 года в обычном календаре Windows 1900.

PHPExcel имеет функции, встроенные в преобразовании, что MS Excel сериализованных даты/время либо метку времени UNIX или объект PHP DateTime

$unixTimeStamp = PHPExcel_Shared_Date::ExcelToPHP($cell->getOldCalculatedValue()); 

, а затем использовать обычные функции даты PHP, чтобы отформатировать его

или вы можете использовать

$dateTimeObject = PHPExcel_Shared_Date::ExcelToPHPObject($cell->getOldCalculatedValue()); 

и использовать обычные методы объекта PHP DateTime форматировать его

+0

Еще один вопрос: могу ли я получить «OldCalculatedValue» через '$ objPHPExcel-> getActiveSheet() -> toArray()' или другой метод? Я рассмотрел 4 параметра 'toArray()', похоже, нет. – worldask

+0

Нет, единственный вариант для 'getOldCalculatedValue();' - это вызов для отдельных ячеек –

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