python - Python xlwt 库中的 set_style 不适用于包含文本的单元格

标签 python excel xlwt

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

最佳答案

每当您使用 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)

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

关于python - Python xlwt 库中的 set_style 不适用于包含文本的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21198979/

相关文章:

python - 按位置在另一个列表列表中搜索子列表项

Python __getitem__ 错误

Excel 日期转 Unix 时间戳

python - 使用 xlwt 'get_sheet' 方法访问工作表

Python xlwt - 使列只读(单元格保护)

Python的nosetests运行测试两次

python - Pygame 缩放健康栏

excel - 更新用户表单标签 Worksheet_Calculate 和每次打开用户表单

excel - 为什么Excel平均给出不同的结果?

python - 通过 Python 模块 xlwt 更改 xls 文件中的默认分页符