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

person mryan    schedule 27.09.2011    source источник
comment
Я предлагаю вам разархивировать файл .xlsx и посмотреть, как на самом деле определены стили ячеек - возможно, Excel делает что-то очень странное...   -  person Gagravarr    schedule 28.09.2011


Ответы (1)


Рекламный комментарий OP:

Спасибо, что указали мне правильное направление. Я разархивировал и посмотрел файл styles.xml. Можно увидеть некоторые элементы со значениями оттенка. Теперь, когда я получаю значение оттенка в poi, серые ячейки выше отображаются как: 06/04/2007 - FFFFFFFF:0:-0.1499984740745262 Теперь я могу положиться на poi :-)

person Community    schedule 21.09.2012