提问人:Ann Alexis 提问时间:5/4/2023 最后编辑:toyota SupraAnn Alexis 更新时间:5/5/2023 访问量:23
如何使用python向Excel列中具有假值的单元格添加红色背景填充
How to add red background fill to cells with false value in columns of excel using python
问:
我有一个 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 填充来表示假值。
答: 暂无答案
评论