我在java代码上使用 findSimilarColor 时遇到了一些问题。 我已经阅读了stackoverflow中的一些文章,这些文章可以帮助我获得以下代码。
HSSFCellStyle style = wb.createCellStyle();
HSSFPalette palette = wb.getCustomPalette();
// get the color which most closely matches the color you want to use
HSSFColor myColor = palette.findSimilarColor(226, 0, 116); //java don't recognize this color
// get the palette index of that color
short palIndex = myColor.getIndex();
// code to get the style for the cell goes here
style.setFillForegroundColor(palIndex);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);
有了这个,我设置一个颜色没有问题,除了我正在尝试使用的RGB颜色(226, 0, 116)
。
出于某种原因,我在最后打开excel文件时显示的颜色为RGB (128, 0, 128)
。
有没有人知道为什么会这样?或者另一种解决方案?
感谢您的帮助。
答案 0 :(得分:2)
我只是测试你的解决方案,我得到“找不到免费颜色索引”错误。所以我搜索一下,找出以下代码以避免此错误。
HSSFPalette palette = wb.getCustomPalette();
palette.setColorAtIndex(HSSFColor.TAN.index, (byte)226, (byte)0, (byte)116);
cabecalho.setFillForegroundColor(HSSFColor.TAN.index);
似乎我无法为托盘添加颜色,因为调色板已满,所以使用此代码我可以覆盖“Tan.index”以获得我想要的RGB颜色。
我会尝试找到更好的解决方案,但与此同时这将有很大的帮助。
再次感谢你。
答案 1 :(得分:1)
对象调色板中是否定义了颜色(226, 0, 116)
?您要求调色板中定义的颜色更接近您的要求,并且(128, 0, 128)
似乎是最接近的。
尝试类似:
HSSFColor myColor = palette.addColor(226, 0, 116);
而不是要求类似的颜色。