2009-12-02 71 views
6

我正在使用JExcelApi来生成XLS文件。从jxl.format.Colour,我看到如何获得“标准Excel颜色调色板”中的任何颜色,但不知道如何创建新颜色(比如,给定RGB颜色)。在JExcelApi中创建新颜色

但在Excel本身,我可以选择任何颜色。

我只是想念它吗? JExcelApi有没有办法选择任意颜色?我现在正在使用一个简单的查找最接近标准的颜色方法,这是可以的,但不是很好。

回答

3

2007年以前的Excel版本有一个标准调色板,并且考虑到您使用的API不支持2007格式,您可能会遇到这种情况。您可以选择任何颜色的原因可能是因为您正在使用新版本的Excel。

请参阅this information on the Microsoft site

我不明白你如何覆盖你正在使用的API中的标准调色板,但在Apache POI(它也可以让你编写Excel文件)中可以:看到this link。基本上,你需要做的是:给你的细胞分配一定的标准颜色(绿色等);然后覆盖这些颜色与您需要的任何自定义颜色。

+0

这是一个很好的开始,谢谢。我将检查Apache POI来源,看看改变标准调色板是否看起来很困难。 – Ken 2009-12-22 18:50:12

+0

不幸的是,这不是答案,但我不能因为某些原因而改变主意 - 如果您正在寻找实际的解决方案,请参阅下面的“Damien B”的答案(setColourRGB)。 – Ken 2010-01-07 22:21:13

15

覆盖在JExcel API的调色板指数的方法是使用该方法的源代码可写入工作簿上的[setColourRGB] [1]。例如:

myWorkbook.setColourRGB(Colour.LIGHT_TURQUOISE2, 14, 67, 89); 

如果您想更改调色板条目中的颜色值,默认情况下第二个浅绿松石色。或者,更容易在某些情况下,直接与调色板指数:

myWorkbook.setColourRGB(Colour.getInternalColour(myPaletteIdx), 14, 67, 89); 

小更新:只索引为8至64可根据jxl.biff.PaletteRecord的源代码内的注释进行定制。

[1]:http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/jxl/write/WritableWorkbook.html#setColourRGB(jxl.format.Colour,INT,INT,INT)

+0

这看起来很完美!谢谢! (不幸的是,SO不会让我把它标记为“正确的”答案。) – Ken 2010-01-07 22:19:55

+0

您仍然可以提高答案:-) 我已经添加了一个注释:如果请求的索引严格低于8,则调用setColourRGB被默默地忽略。 – 2010-01-08 13:22:30

5
WritableCellFormat cellFormat = new WritableCellFormat(); 

Colour customColor = new Colour(10000, "1", 255, 0, 0){  
}; 

cellFormat.setBackground(customColor); 
writableCell.setCellFormat(cellFormat);