gpt4 book ai didi

python - 使用 xlsxwriter 为行中包含的内容着色,但不将颜色锁定到该行号?

转载 作者:太空宇宙 更新时间:2023-11-03 21:06:45 24 4
gpt4 key购买 nike

我使用 python 与 pandas 和 xlsxwriter 模块来格式化动态生成的 Excel 文件。我需要将某些行设置为黄色,具体取决于一列的内容。这是我的代码(“数据”是一个 pandas DataFrame,其中每一行代表一个人)。查找 # 注释,它会将您指向我正在讨论的相关代码:

def format_excel(data):

writer = pd.ExcelWriter('InviteList.xlsx', engine='xlsxwriter')

data.style.to_excel(writer, sheet_name='Sheet1', startrow=1, header=False, index=False)

workbook = writer.book
worksheet = writer.sheets['Sheet1']

# Styles
yellow = workbook.add_format({'bg_color': '#fdf2d0', 'border': 1, 'border_color': '#C0C0C0'})

# Hacky bypass of default header style that pandas imposes
for idx, val in enumerate(data.columns):
worksheet.write(0, idx, val)

# THIS IS THE RELEVANT CODE
for row, employee in data.iterrows():
if data.loc[row, 'rsvp'] == 'maybe':
worksheet.conditional_format(row + 1, 0, row + 1, 15, {'type': 'no_errors', 'format': yellow})

writer.save()

因此,基本上,for 循环会检查该行的“rsvp”列中是否包含“可能”,如果是,则在该行上使用黄色格式化对象。这工作正常,但是......

假设我的 Excel 工作表中的第 4 行和第 7 行颜色为黄色。现在,如果我选择一列并按字母顺序或类似方式对该列进行排序,则黄色格式会保留在第 4 行和第 7 行中,而不是与其需要保留的内容一起移动。

所以看起来我的实现永久锁定了带有黄色格式的第 4 行和第 7 行,而我需要的是它更加动态:它应该坚持在“rsvp”列中包含“也许”的行,不不管我把它们移到哪里。

编辑:

好的,我通过使用 worksheet.set_row 而不是 worksheet.conditional_format 解决了我的问题。但后来我遇到了一个问题,颜色会坚持正确的行,但其他格式(如字体大小和文本换行)不会,所以我还必须将它们包含在我的黄色格式对象的定义中。

最佳答案

我认为你最后不需要循环。假设您的“可能”标准位于 A 列内,而您想要设为黄色的数据位于 B 列中。您只需编写不带循环的条件格式,如下所示:

worksheet.conditional_format('B1:B5', {'type': 'formula',
'criteria': '=$A1="maybe"',
'format': yellow})

关于python - 使用 xlsxwriter 为行中包含的内容着色,但不将颜色锁定到该行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55346752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com