Создание новых цветов в JExcelApi

Я использую JExcelApi для создания файлов XLS. Из jxl.format.Colour я вижу, как получить любой из цветов в "стандартной цветовой палитре Excel", но не как создать новый цвет (скажем, с учетом его RGB).

Но в самом Excel я могу выбрать любой цвет.

Я просто скучаю по нему? Есть ли способ в JExcelApi выбрать произвольный цвет? Я сейчас использую простой метод поиска ближайшего стандартного цвета, который в порядке, но не очень хорош.

4 ответа

Решение

Версии Excel до 2007 года имеют стандартную палитру, и, учитывая, что используемый вами API не поддерживает формат 2007, вы можете застрять в этом. Причина, по которой вы можете выбрать любой цвет, который вы хотите, вероятно, потому, что вы используете новую версию Excel.

Смотрите эту информацию на сайте Microsoft.

Я не понимаю, как можно переопределить стандартную цветовую палитру в используемом вами API, но в Apache POI (который также позволяет писать файлы Excel) вы можете: увидеть эту ссылку. По сути, вам нужно: назначить определенные стандартные цвета (зеленый и т. Д.) Вашим ячейкам; затем замените эти цвета на любой нужный вам цвет.

Чтобы переопределить индекс палитры в 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, int, int, int)

WritableCellFormat cellFormat = new WritableCellFormat();

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

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

Посмотрите на исходный код Color Class из JXL

http://www.docjar.com/html/api/jxl/format/Colour.java.html

и jExcel его с открытым исходным кодом:)

Другие вопросы по тегам