Excel
заполнение ячеек - это заполнение шаблона. Цвет переднего плана заливки - это цвет рисунка, а цвет фона заливки - цвет позади рисунка.
Так что, только если шаблон заливки вообще существует, цвета имеют смысл, иначе нет. Поэтому определите, заполнена ли ячейка, получая шаблон заливки, а не по цвету.
Do CellStyle.getFillPattern и только в том случае, если FillPatternType не FillPatternType.NO_FILL , тогда ячейка заполняется.
В текущих apache poi
версиях вы будете делать:
...
CellStyle cellStyle = cell.getCellStyle();
FillPatternType patternType = cellStyle.getFillPattern();
if (patternType != FillPatternType.NO_FILL) {
short colorIdx = cellStyle.getFillForegroundColor();
...
В древнем apache poi 3.9
CellStyle.getFillPattern
возвращает short
. Так должно быть:
...
CellStyle cellStyle = cell.getCellStyle();
short patternType = cellStyle.getFillPattern();
if (patternType != 0) {
short colorIdx = cellStyle.getFillForegroundColor();
...