Как изменить цвет всей строки в Excel, когда раскрывающийся список используется с помощью python - PullRequest
1 голос
/ 07 февраля 2020

Как изменить фон всей ячейки, когда раскрывающийся список имеет два значения Высокий и Низкий с использованием Python и XlsxWriter data_validation()?

Если выбран Высокий с использованием раскрывающегося списка, должна быть вся строка зеленый. Если выбран Низкий с помощью выпадающего меню, вся строка должна быть красной.

Я использовал следующие строки в своем коде или попробовал вот так

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']})   

Если нажать High, строка должна быть зеленой. Если щелкнуть Низкая, строка должна быть красной.

Я не могу добавить цвет фона для того же.

1 Ответ

1 голос
/ 07 февраля 2020

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()

Вывод:

enter image description here

...