【问题标题】:How to change the color of the entire Row in excel , when a drop down is used using python使用python使用下拉菜单时,如何在excel中更改整个行的颜色
【发布时间】:2020-02-08 06:17:18
【问题描述】:

当使用 Python 和 XlsxWriter data_validation() 下拉具有两个值 High 和 Low 时如何更改整个单元格的背景?

如果使用下拉选择“高”,则整行必须为绿色。如果使用下拉选择低,则整行必须为红色。

我在我的代码中使用了以下几行,或者我尝试过这样的

workbook = xlsxwriter.Workbook('Reports_Sample.xlsx') ##工作表标题

sheet1 = workbook.add_worksheet("Report1")     ## Sheet 1

heading=["A","B","C","D"]

## Now i am adding drop down as High and Low to the column D

sheet1.data_validation('D2:D7', {'validate': 'list',
                                 'source': ['High', 'Low']})   

如果点击高,该行应该是绿色的。如果单击“低”,则该行应为红色。

我无法为其添加背景颜色。

【问题讨论】:

    标签: python excel python-3.x xlsxwriter


    【解决方案1】:

    99% 的事情您可以使用 excel 手动完成,您可以使用强大的库 xlsxwriter 将它们自动化。

    话虽如此,我会这样做:

    import pandas as pd
    import numpy as np
    
    # Create a test df
    df = pd.DataFrame({'A': [1,2,3,4],
                        'B': ['a','b','c','d'],
                        'C': [2.2,np.nan,8.1,9.0],
                        'D': [np.nan,np.nan,np.nan,np.nan]})
    
    # Kickstart the xlsxwriter
    writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
    df.to_excel(writer, sheet_name='Sheet1', index=False)
    workbook  = writer.book
    worksheet = writer.sheets['Sheet1']
    
    # Define the formats
    format_green = workbook.add_format({'bg_color': 'green'})
    format_red = workbook.add_format({'bg_color': 'red'})
    
    # Apply the data validation rule
    worksheet.data_validation('D2:D5', {'validate': 'list',
                                'source': ['High','Low']})
    
    # Apply the conditional formating rules
    worksheet.conditional_format('A2:D5', {'type': 'formula',
                                'criteria': '=$D2="High"',
                                'format': format_green})
    
    worksheet.conditional_format('A2:D5', {'type': 'formula',
                                'criteria': '=$D2="Low"',
                                'format': format_red})
    
    writer.save()
    

    输出:

    【讨论】:

    • 嗨,这对我来说很好用。但是当我使用openpyxl时它会抛出错误。错误是“工作表”对象没有属性“add_format”。请问在使用 openpyxll 时需要做哪些更改。我添加了 data_val = DataValidation(type="list",formula1='=$D3:$D9') sheet2.add_data_validation(data_val) 。它没有工作
    • 您好,openpyxl 和 xlsxwriter 可能会做同样的事情(编写 excel 文件),但它们是使用不同语法的不同库。不幸的是我不熟悉openpyxl,你应该在那里发布一个问题或阅读文档openpyxl.readthedocs.io/en/stable
    猜你喜欢
    • 2023-01-05
    • 2019-09-24
    • 1970-01-01
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    相关资源
    最近更新 更多