Изменение цвета ячейки с помощью apache poi

Я использую Apache POI для чтения данных в электронной таблице номеров деталей. Я ищу номер детали в нашей базе данных, если у нас есть чертеж детали в САПР, я окрашиваю ячейку с номером детали в зеленый цвет, если нет, я окрашиваю ее в красный цвет. После завершения обработки таблица сохраняется. У меня проблема в том, что каждая ячейка в этом столбце становится зеленой. Я прошел через код, логика для поиска номера детали работает нормально, и логика для определения того, какого цвета должна быть ячейка, и настройка цвета и заливки, похоже, также работает. Любые идеи, что я делаю неправильно здесь?

Спасибо.

//Check the parts
for(int r=1;r<sheet.getPhysicalNumberOfRows();r++) {
    String partNumber = null;
    switch(cell.getCellType()) {
        case HSSFCell.CELL_TYPE_NUMERIC:
            long pNum = (long) cell.getNumericCellValue();
            partNumber = String.valueOf(pNum);
            break;
        case HSSFCell.CELL_TYPE_STRING:
            partNumber = cell.getStringCellValue();
            break;
        default:
            logger.info("Part Number at row " + r + " on sheet " + partList.getSheetName(s) + "is of an unsupported type");
    }

    try {
        List<String> oldMaterialNumbers = getOldMaterialNumbers(partNumber);

        boolean gotDrawing = checkPartNumber(oldMaterialNumbers, partNumber);
        //If there's a drawing then color the row green, if not red.
        short bgColorIndex = gotDrawing
                                ?HSSFColor.LIGHT_GREEN.index //42
                                :HSSFColor.RED.index; //10

        HSSFCell curCell = row.getCell(partNumberColumn);
        HSSFCellStyle curStyle = curCell.getCellStyle();

        curStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        curStyle.setFillForegroundColor(bgColorIndex);

        curCell.setCellStyle(curStyle);

    }catch(Exception e) {
        throw e;
    }
}
23
задан Striker 17 July 2012 в 19:31
поделиться