为什么 Apache POI 不能用 rgb 获得我选择的颜色

我用下面的方法用 rgb 获得颜色


public short getRGBColor(int red, int green, int blue){

        HSSFWorkbook hwb = new HSSFWorkbook();

        HSSFPalette palette = hwb.getCustomPalette();

        return palette.findSimilarColor(red,green, blue).getIndex();

    }

然后调用下面的方法


   public CellStyle createStyles(Workbook wb){

    CellStyle style;

    Font font1 = wb.createFont();

            font1.setBold(false);

            style = wb.createCellStyle();

            style.setAlignment(HorizontalAlignment.CENTER);

            style.setFillForegroundColor(getRGBColor(211,225,237));

            style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

            style.setFont(font1);

        return  style;

}

这是我选择的颜色代码 211,225,237 http://img.mukewang.com/616697d900019b5c01010038.jpg


但是 getRGBColor 方法返回另一个颜色代码 204,204,255 http://img.mukewang.com/616697de0001c57501260043.jpg


侃侃无极
浏览 407回答 3
3回答

慕森王

根据文档,参数 forsetFillForegroundColor可以是 EnumIndexedColors或setFillBackgroundColor(XSSFColor color).尝试setRGB从 XSSFColor 类使用XSSF颜色示例代码 -headerCellStyle.setFillForegroundColor(IndexedColors.LIGHT_CORNFLOWER_BLUE.getIndex());

慕田峪9158850

正如您在docs 中所读到的,该方法findSimilarColor在自定义调色板中找到最接近的匹配颜色。您可以尝试使用 方法获得准确的颜色findColor。但请注意,该方法findColor可以返回null.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java