2012-08-24 32 views
4

我在我的項目中使用Excel5。我已經嘗試下面的代碼:在PhpExcel中獲取單元格背景色

$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->getARGB(); 

$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getEndColor()->getARGB(); 

,但這些代碼返回錯誤的顏色。 getStartColor()總是返回FFFFFFFFFF000000getEndColor()而不是紅色。

我不知道缺少什麼。任何人都可以幫我解決這個問題嗎?

+2

你是否正在用setReadDataOnly(TRUE)讀取文件?否則,我只是用solidfill紅色/黃色/綠色/藍色做了一個簡單的測試,上面的代碼正如我所預期的那樣返回了FFFF0000,FF00B050,FFFFFF00和FF0070C0。 –

+0

是的setReadDataOnly()被設置爲true。我使用的是Excel 2002,我不知道getFill函數是否可以正確使用我正在使用的版本。 –

回答

7

setReadDataOnly(TRUE)表示只讀的數據從細胞,但沒有一個造型......和背景顏色是造型的一部分,當它加載該文件的讀者會忽略背景顏色。 ..如果填充樣式未加載,則調用$ objPHPExcel-> getActiveSheet() - > getStyle('A1') - > getFill()將返回默認填充樣式和顏色。

負載與setReadDataOnly(FALSE)的文件,你會發現它的工作原理

編輯

這是遠遠超出PHPExcel的....一切都是通過DDE人口,包括大多數的範圍樣式,所以底層填充顏色是純的(由PHPExcel getFill顏色調用返回),直到外部可執行文件TOS.exe填充數據並相應地設置樣式。您唯一的選擇是使用COM,以便工作簿在MS Excel中執行。

+0

仍然無法正常工作,我已經嘗試儘早將它變爲假。它只反轉getStartColor和getEndColor的輸出。我真的需要儘快解決它。 :( –

+0

如果它不起作用,那麼你能否請你上傳一個工作簿和你的代碼的消毒示例到Codeplex問題板 - 我在一個小時前成功地測試了一下,很明顯你發現了一個情況其中無法讀取填充樣式。 –

+0

這裏是鏈接http://phpexcel.codeplex.com/workitem/18540 –

1

你的第二個代碼:

$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getEndColor()->getARGB(); 

作品,它只是返回十六進制顏色代碼(FF0000)。

RGB =紅藍綠= XX xx月xx

FF0000實際上是RED。

+0

但getEndColor總是返回FF0000,即使在其他單元格中,該顏色爲綠色。 –

相關問題