我想用格式化将Pandas数据帧写入Excel。为此,我使用worksheet1.conditional_format('B3:K12', ...)
。我的问题有两个:
首先,如何将条件格式应用于整列?在examples中,他们使用特定的单元格范围格式(例如writer = pd.ExcelWriter('pacing.xlsx', engine='xlsxwriter')
df.to_excel(writer, sheet_name='Last year vs. current state')
#worksheet.set_column('B:B', 18, format1)
workbook = writer.book
worksheet = writer.sheets['Last year vs. current state']
format_missed = workbook.add_format({'bg_color': '#ff0000'})
format_ok = workbook.add_format({'bg_color': '#008000'})
worksheet.conditional_format('C:C', {'type': 'formula',
'criteria': '=ABS((B-C)/C) > 15',
'format': format_missed})
writer.save()
),有没有办法可以引用整列?
其次,如果B列与C列的差异超过15%,我想用红色标记B列。这个的正确公式是什么?
我目前正在尝试以下代码,但这些代码无效(我不知道如何引用列)。
,
此外,我在Mac上运行Excel,不确定它是否有任何区别,但我注意到Windows版本使用;
的位置,Mac版本需要{{1}对于公式。不知道这会如何影响xlsxwriter
。
答案 0 :(得分:2)
首先,如何将条件格式应用于整列
您可以指定列中第一行到最后一行的单元格范围,例如C1:C1048576
。这是它在内部存储的方式,它只显示为C:C
。
这适用于可以在XlsxWriter中使用列范围的所有情况。
其次,如果B列与C列的差异超过15%,我想用红色标记B列。这个的正确公式是什么?
这是您应该在Excel中解决的问题,然后将条件格式应用于XlsxWriter。这样的事情可能会奏效:
=ABS(B1-C1)/C1 > 0.15
另外,我在Mac上运行Excel,不确定它是否有任何区别,但我已经注意到Windows版本使用的位置,Mac版本需要;对于公式。不知道这会如何影响xlsxwriter
有关如何使用此功能的说明,请参阅XlsxWriter文档的Working with Formulas部分。