如何将颜色类型更改为短颜色或短颜色? 实际上,我正在使用HSSFCellStyle类的setFillForegroundColor方法。 我需要将颜色传递给我的方法并使用该函数。 但是,它以短型为对象 有什么方法可以将其更改为我所需的类型,或者是否有其他方法可以帮助我设置前景色?
当我从用户偏好中获取颜色时,我之前不知道颜色。 所以,我不能使用颜色索引。 请给我一些建议。 我的代码如下所示:
private void setBackgroudColorOfRow(HSSFWorkbook wb, HSSFRow row, Color bgColor) {
HSSFCell cell;
//Iterate through each cell and colour with light orange to
//differentiate the summary row with detail rows
for (Iterator it = row.cellIterator(); it.hasNext();) {
cell = (HSSFCell) it.next(); // row.getCell(j);
if(cell.getColumnIndex() > 1)
{
HSSFCellStyle style = wb.createCellStyle();
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
style.setFillForegroundColor(bgColor);
好的,让我重新构建我的问题,或者简单地缩短它:
如果我的颜色代码是字符串,或者我有颜色名称,我如何获得颜色代码索引?如何获得颜色代码索引?
答案 0 :(得分:1)
style.setRightBorderColor(HSSFColor.BLACK.index);
请参阅此处理自定义颜色。
http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors
//为工作簿创建自定义调色板 HSSFPalette palette = wb.getCustomPalette();
//replacing the standard red with freebsd.org red
palette.setColorAtIndex(HSSFColor.RED.index,
(byte) 153, //RGB red (0-255)
(byte) 0, //RGB green
(byte) 0 //RGB blue
);
答案 1 :(得分:1)
private Short getColorIndex(String colorStr, HSSFWorkbook wb) {
//in this method string containing RGB component is passed
//and corresponding color index is obtained and returned.
short index = 0;
String[] rgb = colorStr.split(",");
System.out.println(colorStr+"--------------");
Integer red = Integer.parseInt(rgb[0]);
Integer green = Integer.parseInt(rgb[1]);
Integer blue = Integer.parseInt(rgb[2]);
palette = wb.getCustomPalette();
HSSFColor color = palette.findSimilarColor(red, green, blue);
if(color != null){
index = color.getIndex();
}
else{
index = IndexedColors.LIME.getIndex();
}
return index;
}
此方法返回了我的颜色索引。虽然它满足了我的要求,但我仍然没有得到我的确切颜色。如果有人可以提出任何建议。否则它工作正常。而且findColor(byte,byte,byte)返回同样的东西。
除非你想使用findColor(byte,byte,byte)方法,你也可以将'int'改为'byte'