You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@poi.apache.org by shankarrao <sh...@gmail.com> on 2011/02/03 12:11:50 UTC

How to set RGB value for the specified colour to a workbook

Could you please let me know how can i set the RGB value to a specified color
to a Workbook? I would like to use something similar to:

workbook.setColourRGB(Colour c, int r, int g, int b), where 
c - the colour whose RGB value is to be overwritten
r - the red portion to set (0-255)
g - the green portion to set (0-255)
b - the blue portion to set (0-255)

Please let me know if this is possible.

Regards,
Shankar
-- 
View this message in context: http://apache-poi.1045710.n5.nabble.com/How-to-set-RGB-value-for-the-specified-colour-to-a-workbook-tp3369098p3369098.html
Sent from the POI - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org


Re: How to set RGB value for the specified colour to a workbook

Posted by Mark Beardsley <ma...@tiscali.co.uk>.
When I first saw this question, I had to take a little while and think about
it because, if I understand correctly, you are asking whether it is possible
to create an alias for a colour within the workbook. This, I understand to
mean that you want to substitute one colour for another such that, to take a
ridiculously extreme example, whilst the colour red shows in the palatte if
the user applies it to a cell/font/border  they will actually see the colour
green appearing. Is this really what you are after? If so, then the answer
is no, there is no mechanism to support this within the api. Furthermore, I
have checked within Excel itself and cannot find this mechanism within that
application although I would imagine that it could be progrmmed using a
macro and VBA code if the cell supprts a listener mechanism that could
capture the users interaction for example. It is possible to create custom
colours but not subsitiute one colour for another in the way you are
describing as far as I can discover.

If, on the other hand, you are asking whether it is possible to create
custom colours and apply them to a font/border/cell within the api then the
answer is a qualified yes. Qualified because XSSF supports this -
constructors exist for the XSSFColor class that allow you to pass either an
instance of the java.awt.Color class, or an array of bytes that encapsulate
the RGB colour balance. HSSF unfortunately limits your colour choices to
just those available within Excel's standard palatte of colours and declares
a series of constants with the HSSFColor class to make setting the colour of
a font/cell/border much easier. If you have a set of colours that are custom
deisgend and that you have to use within a sheet - I can imagine that c
compnay may want to match certain elements to colours in their logo for
instance, then you could always use the template trick again. Simply create
a template that has a hidden sheet. Cell on this sheet could have their
colour set specifically using Excel and it should then be possible, at
runtime, to pick these up using POI. I say 'should' as I have never tried
this myself but it ought to be easy enough to test out. To make the process
even eaiser, you could even create names for these cells that describe the
colour they hold. Then, when you came to read than, you could simply access
each using it's name. This would help to make the purpose of the colour more
readilly apparant and introduce an element of 'self-documentation' but this
wrinkle is far from necessary.

Yours

Mark B
-- 
View this message in context: http://apache-poi.1045710.n5.nabble.com/How-to-set-RGB-value-for-the-specified-colour-to-a-workbook-tp3369098p3370894.html
Sent from the POI - User mailing list archive at Nabble.com.

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@poi.apache.org
For additional commands, e-mail: user-help@poi.apache.org