Python 将条件格式应用于excel中的整行

Python 将条件格式应用于excel中的整行,python,pandas,formatting,conditional-formatting,xlsxwriter,Python,Pandas,Formatting,Conditional Formatting,Xlsxwriter,我是python初学者。 我正在尝试使用pandas和xlsxwriter为文件夹中的所有excel文件设置相同的条件格式。 文件的结构如下所示: A | B | C | ... | K ID | ... | ... | ... | Risk 1 | ... | ... | ... | High 2 | ... | ... | ... | Medium 3 | ... | ... | ... | High 4 | ... | ... | ... | Lo

我是python初学者。 我正在尝试使用pandas和xlsxwriter为文件夹中的所有excel文件设置相同的条件格式。 文件的结构如下所示:

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



我没有错误,但是脚本没有修改文件

您需要将类型更改为公式,并将条件更改为所需条件。请查看此示例,以了解您应该如何编写它:

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()
输出:


谢谢,这对我很有用!因此,如果理解了,我不能用xlsxwriter直接读取数据帧,但我必须用pandas读取数据帧,然后用xlsxwriter写入一个新文件,并用我需要的数据帧填充它,对吗?使用这两种工具,以获得它们的最佳性能。使用pandas读取文件并使用它(最强大的数据分析库)执行所有数据操作,然后如果要格式化文件,请使用xlsxwriter输出。好的,但我仍在寻找如何使用xlsxwriter读取输出文件。我正在尝试使用
writer=pd.read\u excel
但是我有一个AttributeError:
DataFrame对象没有属性“book”
你不能用xlsxwriter读取你的文件,你需要从头开始创建一个文件(这是没有用的),或者像你发布的示例那样从pandas传递一个文件。