Применить условное форматирование ко всей строке в Excel - PullRequest
2 голосов
/ 04 мая 2020

Я python новичок. Я пытаюсь установить одинаковое условное форматирование для всех файлов Excel, которые у меня есть в папке, используя pandas и xlsxwriter. Файлы структурированы следующим образом:

A    | B   | C   | ... | K
ID   | ... | ... | ... | Risk
1    | ... | ... | ... | High
2    | ... | ... | ... | Medium
3    | ... | ... | ... | High
4    | ... | ... | ... | Low

Я хотел бы установить тот же формат (для всей строки) в соответствии со значением в столбце k risk.

import os, glob
import pandas as pd
import numpy as np
import xlsxwriter
import os

#Set the input directory
myFolder = r"MyFolderPath"
os.chdir(myFolder)

#generate a list of excel files using the glob method
fileList = glob.glob("*.xlsx")

#for each element within the list apply the conditional formatting
for elem in fileList:
    df = pd.read_excel(elem)
    writer = pd.ExcelWriter(df)
    df.to_excel(writer, sheet_name = 'sheet_1')

    workbook = writer.book

    format1 = workbook.add_format({'bg_color': 'red'})
    format2 = workbook.add_format({'bg_color': 'yellow'})

    worksheet = writer.sheets['sheet_1']

    worksheet.conditional_format('K2:K100', {'type': 'cell',
                                     'criteria': 'equal to',
                                     'value': '"high"',
                                     'format': format1})
    worksheet.conditional_format('K2:K100', {'type': 'cell',
                                      'criteria': 'equal to',
                                      'value': '"medium"',
                                      'format': format2})
    workbook.close

print ("Done")


У меня не было ошибок, но скрипт не изменяет файлы.

1 Ответ

2 голосов
/ 04 мая 2020

Вам необходимо изменить тип на формулу, а критерии - на желаемое условие. Проверьте этот пример, чтобы увидеть, как именно вы должны написать:

import pandas as pd

df = pd.DataFrame({'ID': [1,2,3,4],
                    'B': ['a','b','c','d'],
                    'Risk': ["High","Medium","High","Low"]})

writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

format_red = workbook.add_format({'bg_color': '#FFC7CE'})
format_yellow = workbook.add_format({'bg_color': '#FFEB9C'})
format_green = workbook.add_format({'bg_color': '#C6EFCE'})

worksheet.conditional_format('A2:C5', {'type': 'formula',
                            'criteria': '=$C2="High"',
                            'format': format_red})

worksheet.conditional_format('A2:C5', {'type': 'formula',
                            'criteria': '=$C2="Medium"',
                            'format': format_yellow})

worksheet.conditional_format('A2:C5', {'type': 'formula',
                            'criteria': '=$C2="Low"',
                            'format': format_green})

writer.save()

Вывод:

enter image description here

...