【问题标题】:set_style in Python xlwt library does not work for cells containing textPython xlwt 库中的 set_style 不适用于包含文本的单元格
【发布时间】:2016-05-13 09:37:47
【问题描述】:

我正在使用 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 中使用了错误的模式。

【问题讨论】:

    标签: python excel xlwt


    【解决方案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)
    

    实际上,我有不止一对款式,我有好几双。 (各种不同的列有不同的数字格式、一些百分比、一些日期等。)所以对于我自己的情况,它比我上面显示的更复杂。但希望这能说明我所说的“在适当的时候选择适当的风格”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多