繁体   English   中英

XlsxWriter Pandas 根据值更改第一行单元格颜色

[英]XlsxWriter Pandas change first row cell color based on value

我正在使用以下代码创建一个 excel 表:

writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
data = pd.DataFrame(data={'val1': [True, False], 
                          'val2': [False, True], 
                          'val3': [True, True], 
                          'val4': [True, False], 
                          'val5': [True, True],
                          'val6': [False, False]},
                           index=pd.Series([1, 2], name='index'))
data.to_excel(writer, index=False, sheet_name='Sheet1')
workbook  = writer.book
ws = writer.sheets['Sheet1']
writer.close()
writer.save()

在此处输入图像描述

我想使用以下字典根据值更改列背景颜色:

colors = {'val3': '#FFFF00',
          'val4': '#DCE6F1',
          'val6': '#FDE9D9'}

在此处输入图像描述

到目前为止,我发现的唯一解决方案是使用第二个 for 循环,尝试:

writer = pd.ExcelWriter('data.xlsx', engine='xlsxwriter')
data = pd.DataFrame(data={'val1': [True, False], 
                          'val2': [False, True], 
                          'val3': [True, True], 
                          'val4': [True, False], 
                          'val5': [True, True],
                          'val6': [False, False]},
                           index=pd.Series([1, 2], name='index'))
data.to_excel(writer, index=False, sheet_name='Sheet1')
workbook  = writer.book
ws = writer.sheets['Sheet1']
d = {
    'bold': True,
    'text_wrap': False,
    'align': 'center',
    'valign': 'center',
    'border': 1
}
colors = {'val3': '#FFFF00',
          'val4': '#DCE6F1',
          'val6': '#FDE9D9'}

for col_num, value in enumerate(data.columns.values):
    for key in colors:
        if key == value:
            d['fg_color'] = colors[key]
            header_format = workbook.add_format(d)
            ws.write(0, col_num, value, header_format)

writer.save()

输出:

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM