2014-08-30 51 views
1

我使用PHPExcle導入了一個excel文件。我發現我無法從計算單元獲得正確的值。 該單元格中的計算值爲8月27日(中文日期),意思是27 August英文。 單元格引用到Sheet2中的A1,Sheet2中的A1引用另一個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) 

我怎樣才能在PHPExcel正確的值(8月27日)?

回答

3

您撥打getOldCalculatedValue();時得到的41878結果是MS Excel序列化的日期/時間戳。

在MS Excel中,日期或時間值的測量方法是自1900年1月1日以來的天數(或1904年1月1日,如果使用Mac 1904日曆)並暗示存儲爲數字。它只是將單元格的數字格式掩碼呈現爲日期和/或時間

41878是在正常的Windows 1900日曆中對應於2014年8月27日的數字。

PHPExcel具有內置來轉換MS Excel的序列化的日期/時間戳,以任一個Unix時間戳或PHP DateTime對象

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

,然後使用普通的PHP日期函數來格式化功能它

,或者您可以使用

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

和正常使用PHP的DateTime對象的方法對其進行格式化

+0

還有一個問題,我可以通過'$ objPHPExcel-> getActiveSheet() - > toArray()'或其他方法獲得'OldCalculatedValue'嗎?我研究過'toArray()'的4個參數,似乎沒有辦法。 – worldask 2014-08-30 10:40:25

+0

不,「getOldCalculatedValue();'的唯一選項是爲單個單元格調用它 – 2014-08-30 10:42:04