在读取XSSFCell的颜色时,即使单元格中有一些用户定义的颜色,cellStyle.getFillForegroundColor()也会返回0。但是我可以得到几个众所周知的颜色的非零值。
for ( int rowNo=0; rowNo<=sheet.getLastRowNum(); rowNo++){
Row row = sheet.getRow(rowNo);
for(int cellNo=0; cellNo<row.getLastCellNum(); cellNo++) {
Cell cell = row.getCell(cellNo, Row.CREATE_NULL_AS_BLANK);
CellStyle cellStyle = cell.getCellStyle();
System.out.println("ForegroundColor:"+cellStyle.getFillForegroundColor());
System.out.println("BackgroundColor:"+cellStyle.getFillBackgroundColor());
}
}
请建议如何从XLSX文件中读取自定义颜色值。
答案 0 :(得分:1)
Excel有两种不同的颜色概念,一种是indexed
,另一种是custom
。索引颜色是预定义颜色,其中颜色值由Microsoft定义。自定义颜色存储通常的RGB值三元组。
XSSFCellStyle具有不同的功能,具体取决于您是否要读取索引颜色或自定义颜色,例如getFillForegroundColor()
返回索引颜色,getFillForegroundColorColor()
返回自定义颜色。
这些方法不会尝试“转换”,因此如果您有自定义颜色,则indexed方法将返回0,如果您有索引颜色,请求自定义颜色将返回null。
另请参阅相关的JavaDoc。