如何在Python中使用xlsxwriter创建“if and”语句以有条件地格式化单元格列

2024-10-02 16:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

这显然不起作用,所以我想知道是否有任何建议。多谢各位

目标: -如果AA2>;0和AB2<;0,然后使用formatc3格式化列A中的单元格。 -如果AA2<;0和AB2>;0,然后使用formatc3格式化列A中的单元格

worksheet.conditional_format('A2:A2100', {'type':   'formula',
                                        'criteria': '=AND($AA2>0,$AB2<0)',
                                        'format':   formatc3})

worksheet.conditional_format('A2:A2100', {'type':   'formula',
                                        'criteria': '=AND($AA2<0,$AB2>0)',
                                        'format':   formatc3})

Tags: andltgtformata2type建议conditional
1条回答
网友
1楼 · 发布于 2024-10-02 16:26:58

你几乎答对了,你错过了excel公式中的一个小东西,它们应该从第一行开始,而不是第二行。也不需要编写两个不同的语句,因为您的条件可以嵌套在一个语句中,这样更高效、更可读。通常,尝试在excel中手动复制所需的输出,然后很容易将其转换为xlsxwriter的语法

以下是一个工作示例:

import pandas as pd
import numpy as np

data = {'Col1': [2, 3, -2, 5],
        'Col2': [-5, 6, 7, -8],
        'Col3': [np.nan, np.nan, np.nan, np.nan]}

df = pd.DataFrame(data)

writer = pd.ExcelWriter('test.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Sheet1', index=False)
workbook = writer.book
worksheet = writer.sheets['Sheet1']

green = workbook.add_format({'bg_color': '#C6EFCE'})

worksheet.conditional_format('C1:C1048576', {'type': 'formula',
                            'criteria': '=OR(AND($A1>0,$B1<0),AND($A1<0,$B1>0))',
                            'format': green})

writer.save()

输出:

enter image description here

相关问题 更多 >