我正在使用Python中的Excel电子表格。如果不遵守条件,我想更改整行的背景颜色。但是,在运行我的代码后,只更改了行的空单元格(不包含任何字符的单元格)的背景颜色。我的前9列包含信息,我的代码只将背景颜色从J列更改为Z.
from xlrd import open_workbook
from xlwt import Workbook, easyxf
Error_Style = easyxf('pattern: pattern solid, fore_colour red;',)
[...]
else:
w_sheet.row(row_index).set_style(Error_Style)
[...]
我想知道我是否使用了easyxf的错误模式。
答案 0 :(得分:1)
每当使用xlwt
编写单元格时,不仅要写入该单元格的值,还要写入该单元格的样式,这将覆盖该单元格中任何先前的样式。遗憾的是,你不能只是“继承”行样式。目前,实现所需内容的方法是创建在写入受影响的行时将使用的样式,并包括那些同时正在编写值的样式。
例如,我有一个报告,其中背景应该在白色和灰色之间交替。虽然我想将所有偶数行设置为灰色而与值无关,但我必须有一对样式,并在适当的时候选择合适的样式。它是这样的:
styles = (easyxf(), easyxf('pattern: pattern solid, fore_color gray25'))
for rx, record in enumerate(records, start=1):
style = styles[rx % 2] # Do your own conditional style selection here
for cx, value in enumerate(record):
ws.write(rx, cx, value, style)
实际上,我不仅仅有一对款式,我有几双款式。 (各种不同的列具有不同的数字格式,一些百分比,一些日期等。)因此,对于我自己的情况,它比我上面显示的更复杂。但希望这能说明“在适当的时候选择合适的风格”的意思。