Заменить коротко на цвет или наоборот - PullRequest
2 голосов
/ 10 ноября 2011

Как изменить тип цвета на короткий или короткий на цвет? На самом деле, я использую метод setFillForegroundColor класса HSSFCellStyle. И мне нужно передать цвет моему методу и использовать функцию. Но он принимает короткий тип как объект.
Есть ли способ, которым я могу изменить его на нужный тип или есть какой-то другой способ, который может помочь мне установить цвет переднего плана?

Поскольку я выбираю цвет из пользовательских настроек, я не знаю цвет ранее. Итак, я не могу использовать цветовой индекс. Пожалуйста, предложите мне что-нибудь. Мой код выглядит так:

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

ОК, позвольте мне переформулировать мой вопрос или, вернее, сократить его:

Как получить индекс цветового кода, если у меня есть цветовой код в строке или, вернее, у меня есть название цвета, как мне получить его индекс цветового кода?

Ответы [ 2 ]

1 голос
/ 14 ноября 2011
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) возвращает то же самое.

Кроме того, вы также можете изменить 'int' на 'byte', если хотите использовать метод findColor (byte, byte, byte)

1 голос
/ 10 ноября 2011

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
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...