POI를 사용하는 경우 Excel 문서의 셀 및 글꼴에는 항상 rgb 값을 반환하지는 않는 색상 정보가 포함되어 있으며 인덱스 값만 제공합니다. 색인 된 값은 색상을 얻기 위해 무언가에 대해 조회해야합니다. HSSFWorkbook (XLS)에서 표를 얻기 위해 사용할 수에 방법이있다 :XSSFWorkbook의 색상 표에 대한 액세스
InputStream in = new FileInputStream("sheet.xls");
HSSFWorkbook wb = new HSSFWorkbook(in);
wb.getCustomPalette();
이 그런 방법은 없다 실제로 나는 관련 클래스의 아무 곳이나 더 팔레트 정보를 찾을 수있는 XSSFWorkbook (XLSX)에 액세스 . XSSFont 및 Cell에서 색인 값을 가져올 수 있지만 색상 "이름"을 너무 많이 얻는 유일한 방법은 IndexedColors 열거와 대조하는 것입니다. 이것은 나를 원래의 동일한 문제로 되돌립니다. 나는 여전히 사용할 rgb 값이 없습니다.
InputStream in = new FileInputStream("sheet.xlsx");
XSSFWorkbook wb = new XSSFWorkbook (in);
wb.getCustomPalette(); <-- fail!
그래서처럼 CellStyle의 방법으로 XSSFColor을 얻고있다 :
CellStyle style = cell.getCellStyle();
XSSFColor color = style.getFillBackgroundColorColor();
는 IndexedColors를 통해 색상 이름을 얻으려면 :
for (IndexedColors c : IndexedColors.values()) { if (c.index == indexColor){ System.out.println("Color: " + c.name()); } }
비슷한 질문 : How do I get the (Java Apache POI HSSF) Background Color for a given cell?
참조 : http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors
업데이트 1 : 나는 마지막으로 작동하는 것을 발견했습니다. 이 XSSFColor 메서드는 ARGB 16 진 코드를 반환하며 RGB 값 (분명히)을 결정할 수 있습니다. 나는 이것이 동일한 문제를 가진 사람에게 x 시간을 절약하는 데 도움이되기를 바랍니다.
((XSSFColor) color).getARGBHex())
업데이트 2 : 내 실망스런 기색, 나는 어떤 세포가 ARGBHex 데이터가 포함 된 배경 XSSFColor을 반환하지 않는 것으로 나타났습니다. 이것을위한 해결 방법을 찾고 있습니다.
getIndexed()에 null이 아닌 값만 제공하는 XSSFColor를 반환하는 CellStyle이 있습니다. 이것이 팔레트 조회가 필요한 이유입니다. 인덱스 값은 값을 사용할 값이없는 것을 의미합니다. –