我正在使用JExcelApi來生成XLS文件。從jxl.format.Colour,我看到如何獲得「標準Excel顏色調色板」中的任何顏色,但不知道如何創建新顏色(比如,給定RGB顏色)。在JExcelApi中創建新顏色
但在Excel本身,我可以選擇任何顏色。
我只是想念它嗎? JExcelApi有沒有辦法選擇任意顏色?我現在正在使用一個簡單的查找最接近標準的顏色方法,這是可以的,但不是很好。
我正在使用JExcelApi來生成XLS文件。從jxl.format.Colour,我看到如何獲得「標準Excel顏色調色板」中的任何顏色,但不知道如何創建新顏色(比如,給定RGB顏色)。在JExcelApi中創建新顏色
但在Excel本身,我可以選擇任何顏色。
我只是想念它嗎? JExcelApi有沒有辦法選擇任意顏色?我現在正在使用一個簡單的查找最接近標準的顏色方法,這是可以的,但不是很好。
2007年以前的Excel版本有一個標準調色板,並且考慮到您使用的API不支持2007格式,您可能會遇到這種情況。您可以選擇任何顏色的原因可能是因爲您正在使用新版本的Excel。
請參閱this information on the Microsoft site。
我不明白你如何覆蓋你正在使用的API中的標準調色板,但在Apache POI(它也可以讓你編寫Excel文件)中可以:看到this link。基本上,你需要做的是:給你的細胞分配一定的標準顏色(綠色等);然後覆蓋這些顏色與您需要的任何自定義顏色。
覆蓋在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)
這看起來很完美!謝謝! (不幸的是,SO不會讓我把它標記爲「正確的」答案。) – Ken 2010-01-07 22:19:55
您仍然可以提高答案:-) 我已經添加了一個註釋:如果請求的索引嚴格低於8,則調用setColourRGB被默默地忽略。 – 2010-01-08 13:22:30
WritableCellFormat cellFormat = new WritableCellFormat();
Colour customColor = new Colour(10000, "1", 255, 0, 0){
};
cellFormat.setBackground(customColor);
writableCell.setCellFormat(cellFormat);
這是一個很好的開始,謝謝。我將檢查Apache POI來源,看看改變標準調色板是否看起來很困難。 – Ken 2009-12-22 18:50:12
不幸的是,這不是答案,但我不能因爲某些原因而改變主意 - 如果您正在尋找實際的解決方案,請參閱下面的「Damien B」的答案(setColourRGB)。 – Ken 2010-01-07 22:21:13