簡體   English   中英

如何使用XlsxWriter根據另一個工作表中的相應單元格值來格式化一個工作表中的所有單元格?

[英]How to format all cells in one sheet based on corresponding cell values in another sheet using XlsxWriter?

我正在使用XlsxWriter將兩個熊貓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()

輸出:

在此處輸入圖片說明

請注意,Excel需要在公式=Sheet2!A1="a"的字符串周圍加上雙引號,並且通過使用相對單元格引用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})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM