2014-12-23 5 views
0

У меня возникла небольшая проблема с использованием findSimilarColor на моем Java-коде. Я уже прочитал некоторые статьи из stackoverflow, которые помогают мне перейти к следующему коду.Использование findSimilarColor для установки фона в файле Excel

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

Есть ли у кого-нибудь идеи, почему это происходит? Или альтернативное решение?

Спасибо за помощь.

ответ

1

Является ли цвет (226, 0, 116), определяемый в объекте палитрой? Вы запрашиваете цвет, определенный в палитре, которая ближе к вашему требованию и кажется, что (128, 0, 128) является самым близким.

Try что-то вроде:

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

вместо просить аналогичного цвета.

2

Я просто проверю ваши решения, и я получаю сообщение об ошибке «Не удалось найти свободный индекс цвета». Поэтому я немного искал и обнаружил следующий код, чтобы избежать этой ошибки.

HSSFPalette palette = wb.getCustomPalette(); 

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

Кажется, что я не мог добавить цвета в палитру, потому что палитра была полной, так с этим кодом, я был в состоянии переписать «Tan.index», чтобы иметь RGB цвета, что я хочу.

Я постараюсь найти лучшее решение, но в то же время это очень поможет.

Еще раз спасибо.