2014-07-03 151 views
2

我使用PHPExcel庫,我提取的列單元格的內容,該單元格有一個日期,在Excel中它顯示爲「30/07/2014」,但是當我使用它顯示的庫:41850作爲日期值,我不能依靠Excel格式化單元格,因爲每次我得到一個不同的日期文件,所以我的問題是,有沒有辦法將使用庫的值41850轉換爲原始日期文字30/07/2014?PHP Excel與日期格式問題

我正在使用的代碼是:

$inputFileType = PHPExcel_IOFactory::identify($inputFileName); 
$objReader = PHPExcel_IOFactory::createReader($inputFileType); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($inputFileName); 
$outPut = $objPHPExcel->getSheet(0)->getCellByColumnAndRow(6, 6)->getFormattedValue(); 
echo $outPut;//41850 

回答

1

你的問題是

$objReader->setReadDataOnly(true); 

你告訴PHPExcel爲只讀從細胞的原始數據,而無需任何格式的信息;但MS Excel對日期使用浮點數(從1/1/1900開始的天數或自2004年1月1日以來的天數,具體取決於所用的日曆)以及數字格式掩碼,以便將其格式化爲日期....通過設置讀取數據只是真實的,你告訴PHPExcel不要讀取數字格式掩碼,所以沒有辦法區分日期值和其他浮點值。

解決辦法:不要使用

$objReader->setReadDataOnly(true); 
+0

幹得好,這對我來說是完美的解決方案,它的工作:)感謝馬克 – user3593154

+0

MS Excel中對日期某些特定的語言環境的格式,所以日期格式掩碼實際上會根據在用戶計算機上運行MS Excel時設置的區域設置來調整顯示以顯示不同的日期; PHPExcel不支持區域識別,所以它使用通用格式的區域識別日期格式 –

+0

我不認爲這是行之有效的我在EXCEL中顯示的日期就像「2014年10月7日」,我仍然得到「 07-10-14「格式仍然提取。有沒有解決這個問題? – user3593154