Покраска ячейки в Excel с условием с использованием Python

Я создаю отчет Excel, который должен дать мне результат автоматических тестов. Он должен сказать, если они не прошли / прошли. Я создал отчет Excel из csv, используя этот код:

 import pandas as pd
    import string
    writer = pd.ExcelWriter("file.xlsx", engine = "xlsxwriter")


    df = pd.read_csv("K:\\results.csv")
    df.to_excel(writer, sheet_name=os.path.basename("K:\\results.csv"))


    # skip 2 rows
    df.to_excel(writer, sheet_name='Sheet1', startrow=2, header=False, index=False)

    workbook = writer.book
    worksheet = writer.sheets['Sheet1']
    # Add a header format.
    header_format = workbook.add_format({
        'bold': True,
        'fg_color': '#ffcccc',
        'border': 1})

    # create dictionary for map length of columns
    d = dict(zip(range(25), string.ascii_uppercase))
    print (d)

    max_len = d[len(df.columns) - 1]
    print(max_len)
    # C
    # dynamically set merged columns in first row
    worksheet.merge_range('A1:' + max_len + '1', 'This Sheet is for Personal Details')

    for col_num, value in enumerate(df.columns.values):
        # write to second row
        worksheet.write(1, col_num, value, header_format)

        column_len = df[value].astype(str).str.len().max()
        column_len = max(column_len, len(value)) + 3
        worksheet.set_column(col_num, col_num, column_len)




    writer.save()

Теперь, если у меня есть ячейка со словом «успех», я хочу покрасить ее в зеленый цвет, а если у меня есть ячейка в Excel, в которой написано «сбой», я хочу покрасить ее в красный цвет. Как я могу получить доступ к определенной ячейке в файле Excel при условии, что в ней написано? Спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
1 221
1

Ответы 1

Для этого можно использовать условный формат:

import pandas as pd


# Create a Pandas dataframe from some data.
df = pd.DataFrame({'Data': ['success', 'bar', 'fail', 'foo', 'success']})

# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter('pandas_conditional.xlsx', engine='xlsxwriter')

# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')

# Get the xlsxwriter workbook and worksheet objects.
workbook  = writer.book
worksheet = writer.sheets['Sheet1']

# Add a format for fail. Light red fill with dark red text.
fail_format = workbook.add_format({'bg_color': '#FFC7CE',
                                   'font_color': '#9C0006'})

# Add a format for pass. Green fill with dark green text.
pass_format = workbook.add_format({'bg_color': '#C6EFCE',
                                   'font_color': '#006100'})

# Apply conditional formats to the cell range.
worksheet.conditional_format('B2:B6', {'type':     'text',
                                       'criteria': 'containing',
                                       'value':    'fail',
                                       'format':   fail_format})

worksheet.conditional_format('B2:B6', {'type':     'text',
                                       'criteria': 'containing',
                                       'value':    'success',
                                       'format':   pass_format})

# Close the Pandas Excel writer and output the Excel file.
writer.save()

Выход:

См. Документацию XlsxWriter на Работа с условным форматированием. Обратите внимание: вы также можете использовать числовой диапазон (строка, столбец) вместо диапазона A1:D4, см. conditional_format ().

Другие вопросы по теме