2011-10-12 4 views
18

Я использую Python 2.7 и модуль xlwt для первенствуешь экспортпитона xlwt установить собственный цвет фона ячейки

Я хотел бы установить фоновой цвет ячейки я знаю, я могу использовать

style1 = xlwt.easyxf('pattern: pattern solid, fore_colour red;') 

но я хотел бы установить пользовательский цвет smth. как # 8a8eef или есть палитра возможных цветов, потому что светло-синий не работают :)

спасибо

ответ

11

Если вы не используете easyxf() и вместо построения XFStyle шага объекта за шагом, вот еще один способ использования дружественного к пользователю названия цветов:

import xlwt 

style = xlwt.XFStyle() 
pattern = xlwt.Pattern() 
pattern.pattern = xlwt.Pattern.SOLID_PATTERN 
pattern.pattern_fore_colour = xlwt.Style.colour_map['dark_purple'] 
style.pattern = pattern 
5

Для предопределенных цветов см xlwt.Style._colour_map_text в Style.py.

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

+0

Есть ли способ добавить пользовательский цвет RGB в ячейку? –

+0

@IshikawaYoshi да, проверьте пожалуйста мой ответ. – alecxe

22

В настоящее время, существует способ (первоначально предложенный here) для определения и использования пользовательского цвета с использованием add_palette_colour() и set_colour_RGB().

Вот пример:

import xlwt 


book = xlwt.Workbook() 

# add new colour to palette and set RGB colour value 
xlwt.add_palette_colour("custom_colour", 0x21) 
book.set_colour_RGB(0x21, 251, 228, 228) 

# now you can use the colour in styles 
sheet1 = book.add_sheet('Sheet 1') 
style = xlwt.easyxf('pattern: pattern solid, fore_colour custom_colour') 
sheet1.write(0, 0, 'Some text', style) 

book.save('test.xls') 

Также см фактический pull request, который сделал это произойдет.

+0

В вашем примере вы использовали '0x21'. Есть ли какая-то причина, которую вы выбрали? Если я хочу добавить еще, следует ли использовать «0x22», «0x23» и т. Д.? – Nick

+0

@Nick [исходный код] (https://github.com/python-excel/xlwt/blob/917a8ad8db35d6e8abb306a2fda2ace648a6ab89/xlwt/Style.py#L374) предполагает, что '0x21' может быть любым числом в диапазоне' 8 <= colour_index <= 63' – Acute

+0

Обратите внимание, что вы можете опустить 'add_palette_colour', перезаписав существующий цвет палитры. Пример: 'book.set_colour_RGB (0x16, 245, 245, 245); style = xlwt.easyxf ('pattern: pattern solid, fore_colour gray25') ' – Blaise

2

Альтернативное решение:

Если вы можете уйти с цветами, указанными в xlwt, перейти к цветовой информации сайта, как http://www.colorhexa.com/90ee90 и матч с одной из следующих цветов Python Excel: http://bit.ly/1NMH67F

2

Я рекомендую использовать XlsxWriter, также есть замечательные функции. http://xlsxwriter.readthedocs.io/

+1

XlsxWriter имеет более интуитивно понятный API b/c, он использует пары значений ключа для установки форматов – Wes

Смежные вопросы