如何使用python向Excel列中具有假值的单元格添加红色背景填充

How to add red background fill to cells with false value in columns of excel using python

提问人:Ann Alexis 提问时间:5/4/2023 最后编辑:toyota SupraAnn Alexis 更新时间:5/5/2023 访问量:23

问:

我有一个 excel 文件。它有 C_ID、A_ID、ID_Comparison、C_Title、A_Title、Title_Comparisom 等列。比较列根据比较列分为 true 或 false。如果值为 false,我想为比较列的单元格添加背景填充。我在一个 excel 文件中有许多工作表,在一个工作表中,我有如上所示的列,我想为每个工作表迭代每个工作表,我需要查看列以过滤比较列并执行操作并生成新的 Excel 文件。

Import pandas as pd

from openpyxl.styles import PatternFill

from openpyxl.utils import get_column_letter

with pd.ExcelFile(input file) as xls:


Dfs = {sheet_name: xls.parse(sheet_name) for sheet_name in xls.sheet_names}

For sheet_name,  df in dfs.items():

 for col in df.filter(regex='_Comparison').columns:

    df[col] = df[col].map({True: "True", False: "False"})

    with pd.ExcelWriter("output.xlsx", engine="openpyxl") as writer:

        # Export DataFrame content

        df.to_excel(writer, sheet_name=sheet_name, index=False)

        # Set background colors depending on cell values

        sheet = writer.sheets[sheet_name]

        column_letter = get_column_letter(sheet[f'{col}1'].column)

        for cell, in sheet[f'{column_letter}2:{column_letter}{len(df) + 1}']:

            value = df[col].iloc[cell.row - 2] # value is "True" or "False"

            cell.fill = PatternFill("solid", start_color=("5cb800" if value == "True" else 'ff2800'))

此代码每次循环比较列时都会覆盖输出文件。我想获取输出文件作为输入文件。所有列的顺序相同,只是比较列将有一个红色的 bg 填充来表示假值。

Python Excel 比较

评论


答: 暂无答案