2013-07-24 122 views
0

我使用PHPExcel圖書館閱讀電子表格數據。這個圖書館給我閱讀'DATE'值帶來麻煩。PHPExcel - 讀日期值

問: 如何指示PHPExcel正確讀取「日期」值,即使「setReadDataOnly」設置爲「假」?

描述:

PHPExcel版本:2.1,環境:Ubuntu的12

下面是代碼塊:

$objReader = \PhpExcel\PHPExcel_IOFactory::createReaderForFile($spreadSheetFullFilePathString); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($spreadSheetFullFilePathString); 
$objWorksheetObject = $objPHPExcel->getActiveSheet(); 

我得到的 '日期' '整數' 值列默認值。

我發現,行 '$ objReader-> setReadDataOnly(真)' 造成的麻煩。 因此,將其更改爲'$ objReader-> setReadDataOnly(false)'。

我這個更改後正確地獲取日期列的值。但是現在讀者正在閱讀excel中的所有ROWS + COLUMNS列。

任何幫助將不勝感激。

+0

什麼版本的PHPExcel? 1.7.9是最新的產品發佈;而且我仍在致力於2.0.0版本的發佈 –

回答

1

如果$objReader->setReadDataOnly(true);,則可以識別日期唯一的讀者是Gunumeric讀者。日期值只能由數字格式掩碼進行識別,並setReadDataOnly(true)告訴讀者不讀的格式,所以日期以後不能被識別(Gnumeric的是個例外,因爲這個問題被確認後,這是寫的,但沒有的如果您需要確定日期,那麼此時唯一的選項是$objReader->setReadDataOnly(false);

但是,對於日期單元格,您不應獲得整數值;你應該得到一個float:它的標識Excel的日期時間序列化值的時間部分十進制

如果你知道哪些單元格包含日期,那麼你可以將它們轉換爲UNIX時間戳或使用PHPExcel_Shared_DateTime類中定義的幫助器函數(然後可以使用所有標準PHP日期處理函數)的PHPExcel DateTime對象。

你說讀者現在正在讀ALL the ROWS + COLUMNS found in the excel:它應該,不管setReadDataOnly的值。如果你不想讀取所有的行和列,那麼你需要設置一個讀取過濾器。