使用Apache POI获取单元格颜色

我正在尝试学习如何在一个小项目中使用Apache POI。 我想通过使用颜色编码的单元格来使用Excel创build“房间布局”,并将数据加载到Java程序中。 我想了解如何访问一个单元格的颜色属性,但我问的是:

是否可以访问空白单元格的颜色(无数据或值),还是单元格需要有数据才能使Apache POI读取它?

我只对颜色感兴趣,所以最好把垃圾数据放在单元格中,或者可能根据坐标来遍历它们? 我是全新的Apache POI,所以任何帮助,非常感激。

你有什么尝试? 请阅读繁忙的开发者指南HSSF和XSSFfunction 。

假设以下工作簿:

在这里输入图像说明

然后下面的代码应该与a.xlsx (XSSF)一样适用于a.xls (HSSF)。

 import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import java.io.*; class ReadExcelEmptyColoredCells { public static void main(String[] args) { try { //Workbook workbook = WorkbookFactory.create(new File("a.xls")); Workbook workbook = WorkbookFactory.create(new File("a.xlsx")); Sheet sheet = workbook.getSheetAt(0); for (Row row : sheet) { for (Cell cell : row) { if (! "".equals(String.valueOf(cell))) System.out.println(cell.getAddress() + ": " + String.valueOf(cell)); CellStyle cellStyle = cell.getCellStyle(); Color color = cellStyle.getFillForegroundColorColor(); if (color != null) { if (color instanceof XSSFColor) { System.out.println(cell.getAddress() + ": " + ((XSSFColor)color).getARGBHex()); } else if (color instanceof HSSFColor) { if (! (color instanceof HSSFColor.AUTOMATIC)) System.out.println(cell.getAddress() + ": " + ((HSSFColor)color).getHexString()); } } } } workbook.close(); } catch (InvalidFormatException ifex) { } catch (FileNotFoundException fnfex) { } catch (IOException ioex) { } } }