2011-09-27 74 views
1

感謝您的期待。Apache POI - 背景顏色不如預期

我使用Apache POI來讀取excel文件。我想使用將使用背景色的條件邏輯。但我不明白我得到的結果。

爲什麼下面的代碼顯示相同顏色的不同結果?

代碼:

XSSFCell cell = (XSSFCell) row.getCell(i);  
if(cell.getDateCellValue()!=null) { 
    DateTime val = new DateTime(cell.getDateCellValue()); //Joda-Time lib. 

    XSSFCellStyle cellStyle = (XSSFCellStyle) cell.getCellStyle().clone(); 
    cellStyle.setFillPattern(XSSFCellStyle.SOLID_FOREGROUND); 
    XSSFColor x = cellStyle.getFillForegroundXSSFColor(); 

    String colorStrVal = x==null ? "null" : x.getARGBHex() + ":" + x.getIndexed(); 
    System.out.println(val.toString("dd/MM/yyyy") + " - " + colorStrVal); 
} 

結果 - 我想非指定顏色條目都是相同的(他們是灰色,並在Excel看起來不錯 - 所有註冊爲相同的顏色):

06/04/2007 - FFFFFFFF:0 
02/06/2008 - FFFFFFFF:0 
10/05/2011 - FFFFF2B9:0 //yellow 
26/07/2008 - FFFFFFFF:0 
04/07/2010 - FFFFFFFF:0 
12/04/2009 - FFFFFFFF:0 
19/09/2010 - FFFFFFFF:0 
16/04/2011 - FFFFFFFF:0 
16/01/2009 - FFFFFFFF:0 
16/06/2010 - FFD9D9D9:0 
14/05/2011 - FFD9D9D9:0 
07/12/2007 - FFFFFFFF:0 
22/02/2009 - FFFFFFFF:0 
25/10/2009 - FFFFFFFF:0 
11/08/2008 - FFFFFFFF:0 
29/10/2009 - FFFFFFFF:0 
06/09/2010 - FFFFFFFF:0 
24/06/2011 - FFE60000:0 //red 
15/08/2008 - FFFFFFFF:0 
17/09/2010 - FFFFFFFF:0 
27/03/2011 - FFFFFFFF:0 
19/05/2008 - FFFFFFFF:0 
26/05/2009 - FFFFFFFF:0 
03/09/2010 - FFFFFFFF:0 
25/04/2011 - null  //white 
22/06/2011 - FFFFF2B9:0 //yellow 
25/09/2009 - FFFFFFFF:0 
20/04/2011 - FFFFFFFF:0 
16/06/2011 - FFFFF2B9:0 //yellow 
02/03/2010 - FFD9D9D9:0 
31/01/2011 - FFD9D9D9:0 
03/06/2011 - FFFFF2B9:0 //yellow 
03/07/2010 - FFFFFFFF:0 
12/09/2010 - FFFFFFFF:0 
14/11/2010 - FFE60000:0 //red 
23/06/2011 - FFFFF2B9:0 //yellow 
24/06/2011 - FFFFF2B9:0 //yellow 
18/09/2010 - FFD9D9D9:0 
11/03/2011 - FFD9D9D9:0 
25/12/2010 - null  //white 
17/05/2011 - FFEEECE1:0 //blue 
27/03/2010 - FFFFFFFF:0 
12/03/2011 - FFFFFFFF:0 
14/03/2011 - FFFFFFFF:0 
+0

我建議您解壓縮.xlsx文件,並看看單元格樣式實際上被定義爲什麼 - 這可能是excel做一些非常奇怪的事情...... – Gagravarr

回答

0

促進OP的評論:

感謝您指引我正確的方向。我解壓縮並查看styles.xml。可以看到一些帶有色調值的元素。當我現在獲得poi的色調值時,上面的灰色單元格顯示爲:06/04/2007 - FFFFFFFF:0:-0.1499984740745262我現在可以依靠poi :-)