getFillForegroundColor()为彩色单元格返回0

时间:2015-11-03 16:20:57

标签: apache-poi

在读取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文件中读取自定义颜色值。

1 个答案:

答案 0 :(得分:1)

Excel有两种不同的颜色概念,一种是indexed,另一种是custom。索引颜色是预定义颜色,其中颜色值由Microsoft定义。自定义颜色存储通常的RGB值三元组。

XSSFCellStyle具有不同的功能,具体取决于您是否要读取索引颜色或自定义颜色,例如getFillForegroundColor()返回索引颜色,getFillForegroundColorColor()返回自定义颜色。

这些方法不会尝试“转换”,因此如果您有自定义颜色,则indexed方法将返回0,如果您有索引颜色,请求自定义颜色将返回null。

另请参阅相关的JavaDoc