0

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

有人知道为什么会这样吗?还是替代解决方案?

谢谢您的帮助。

4

2 回答 2

2

颜色是否(226, 0, 116)在对象调色板中定义?您要求调色板中定义的颜色更接近您的要求并且似乎(128, 0, 128)最接近。

尝试类似:

HSSFColor myColor = palette.addColor(226, 0, 116);

而不是要求相似的颜色。

于 2014-12-23T12:09:13.637 回答
2

我只是测试你的解决方案,我得到“找不到免费的颜色索引”错误。所以我搜索了一下,找到了下面的代码来避免这个错误。

HSSFPalette palette = wb.getCustomPalette();

palette.setColorAtIndex(HSSFColor.TAN.index, (byte)226, (byte)0, (byte)116);
cabecalho.setFillForegroundColor(HSSFColor.TAN.index);

似乎我无法向调色板添加颜色,因为调色板已满,因此使用此代码我能够覆盖“Tan.index”以获得我想要的 RGB 颜色。

我会尝试找到一个更好的解决方案,但同时这将有很大帮助。

再次感谢您。

于 2014-12-23T13:14:10.137 回答