gpt4 book ai didi

python - 如何使用 XlsxWriter 根据另一张工作表中相应的单元格值格式化一张工作表中的所有单元格?

转载 作者:行者123 更新时间:2023-11-28 21:38:24 27 4
gpt4 key购买 nike

我正在使用 XlsxWriter 将两个 pandas DataFrames 导出到 Excel,每个 DataFrame 都有一个单独的工作表。我想根据另一张工作表中的值将颜色格式应用于一张工作表中的所有单元格,它们根据列名和行号一一对应。

例子:

Sheet1

A B C
1 1 3 1
2 0 4 2

Sheet2

A B C
1 a d b
2 b a a

我想为 Sheet1 中所有在 Sheet2 中具有值“a”的单元格分配一种颜色格式。

最佳答案

第一步是在 Excel 中计算出条件格式,然后将其传输到 XlsxWriter。

像下面这样的东西应该可以工作:

import pandas as pd

# Create some Pandas dataframes from some data.
df1 = pd.DataFrame([[ 1, 3, 1 ], [ 0, 4, 2 ]])
df2 = pd.DataFrame([['a', 'd', 'b'], ['b', 'a', 'a']])

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

# Write each dataframe to a different worksheet.
df1.to_excel(writer, sheet_name='Sheet1', header=False, index=False)
df2.to_excel(writer, sheet_name='Sheet2', header=False, index=False)

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

# Create a format for the conditional format.
condition_format = workbook.add_format({'bg_color': '#C6EFCE',
'font_color': '#006100'})

# Write a conditional format over a range.
worksheet.conditional_format('A1:C2', {'type': 'formula',
'criteria': '=Sheet2!A1="a"',
'format': condition_format})

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

输出:

enter image description here

请注意,Excel 需要用双引号将公式 =Sheet2!A1="a" 中的字符串括起来,并使用 relative cell reference (A1 不是绝对值 $A$1)公式单独应用于范围内的每个单元格。

您可以将条件格式应用于基于数据框的范围,如下所示:

# Write a conditional format over a range.
start_row = 0
start_col = 0
end_row = df1.shape[0] -1
end_col = df1.shape[1] -1

worksheet.conditional_format(start_row, start_col, end_row, end_col,
{'type': 'formula',
'criteria': '=Sheet2!A1="a"',
'format': condition_format})

关于python - 如何使用 XlsxWriter 根据另一张工作表中相应的单元格值格式化一张工作表中的所有单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304947/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com