Python xlwt设置单元格自定义背景颜色

24

我正在使用Python 2.7和xlwt模块进行Excel导出。

我想设置单元格的背景颜色, 我知道可以使用

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

但是我想设置自定义颜色,类似于 #8a8eef,或者是否有可能的颜色调色板可用,因为浅蓝色不起作用 :)

谢谢

5个回答

35

现今,有一种方法(最初在这里提出)可以使用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')

同时查看实际的拉取请求,这是使之发生的。


1
在你的例子中,你使用了 0x21。你选择它有什么原因吗?如果我想添加更多,我应该使用 0x220x23等吗? - Nick
@Nick 源代码 表明 0x21 可以是范围在 8 <= colour_index <= 63 的任何数字。 - moriesta
请注意,您可以通过覆盖现有的调色板颜色来省略 add_palette_colour。例如:book.set_colour_RGB(0x16, 245, 245, 245); style = xlwt.easyxf('pattern: pattern solid, fore_colour gray25') - Blaise
请注意,尽管add_palette_color()接受颜色名称中的大写字母,但在easyxf()中使用它们会失败。 如果需要,请确保使用.lower() - Arnaud P

13
如果您没有使用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

6

预定义的颜色请参见Style.py中的xlwt.Style._colour_map_text

如果要使用自定义颜色,您可能需要重新定义调色板,因为颜色不直接用于单元格,而是用作调色板中颜色的索引。我不知道如何扩展调色板。抱歉。


有没有办法将自定义的RGB颜色添加到单元格中? - Ishikawa Yoshi
@IshikawaYoshi 是的,请检查我的答案。 - alecxe

2

2

1
XlsxWriter的API更加直观,因为它使用键值对来设置格式。 - Wes
1
xlwt用于旧的xls格式,而xlsxwriter用于新格式,它们不能互换。 - Gregory

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接