Невозможно прочитать цвет ячейки файла xls, используя Apache POI
import org.apache.poi.ss.usermodel
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
// Assume this method is wrapped in a class
public static void parseFile(){
// File Path has a .xls extension
FileInputStream file = new FileInputStream(filePath);
HSSFWorkbook wb = new HSSFWorkbook(file);
HSSFSheet sheet = wb.getSheetAt(0);
for(int rn = sheet.getFirstRowNum(); rn <= sheet.getLastRowNum(); rn++){
HSSFRow row = sheet.getRow(rn);
for(int cn = 0; cn < row.getLastCellNum(); cn++){
HSSFCell cell = row.getCell(cn);
//This is apache's color
HSSFColor color = cell.getCellStyle().getFillBackgroundColorColor;
// Excel entire row is red and it is not entering here.
if(color.equals(IndexedColors.RED)){
System.out.println("I made it here!");
cn++;
continue;
}
}
}
}
Файл обрабатывается нормально, но он не войдет в мое "если заявление". Я делаю это неправильно? Можно ли это сделать с помощью файлов xls? Я вижу примеры для xlsx, но я не вижу ни одного для xls. Спасибо!
1 ответ
Метод getFillBackgroundColorColor()
возвращает следующий тип:
org.apache.poi.ss.usermodel.Color
не
java.awt.Color
Один из способов проверить RED - это проверить значения RGB, например:
byte[] rgb=colore.getRGB();
System.out.println("color" + " " + rgb[0] + " " + rgb[1] + " " + rgb[2] );
if ( (rgb[0] == (byte)0xff)
&& (rgb[1] == 0)
&& (rgb[2] == 0)) {
System.out.println("that is totally red");
}
главное, не перепутайте класс Color
apachePOI с java.awt.Color