Using custom colors with SXSSF (Apache POI)

Viewed 17427

I am trying to write a huge excel file, my requirement allows me to write the row and forget, so i am using SXSSF which allows to keep only a few number of rows in memory and rest all are written to the document. this helps in overcoming outofmemory exception for large files.

but I also need to set styles to cells using sxssf workbook. i am not able to find a way to define and use custom colors in SXSSF (like in XSSF, we can define a custom color directly, and in HSSF we can replace an entry in the palette with a custom color)

i can find no way to access a palette from SXSSF workbook.

I can not create a new HSSF palette as the constructor is protected.

the only way that seems feasible right now is to somehow find a similar color from a list of all predefined colors and use it, instead of the original (but that would require having a rgb color matching algo, which would be another task)

Can someone suggest a workaround (or maybe suggest a primitive rgb color matching algorithm)

3 Answers
CellStyle style = workbook.createCellStyle(); // workbook is of SXSSF type
byte orange[] = new byte[] { (byte) 248, (byte) 203, (byte) 173 };
byte thick_shade_blue[] = new byte[] { (byte) 142, (byte) 169, (byte) 219 };
byte blue[] = new byte[] { (byte) 180, (byte) 198, (byte) 231 };

((XSSFCellStyle) style).setFillForegroundColor(new XSSFColor(thick_shade_blue, null));
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
Related