使用findSimilarColor在Excel文件上设置背景

时间:2014-12-23 11:59:58

标签: java excel palette poi-hssf hssf

我在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)

有没有人知道为什么会这样?或者另一种解决方案?

感谢您的帮助。

2 个答案:

答案 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);

而不是要求类似的颜色。