为了账号安全,请及时绑定邮箱和手机立即绑定

xlsxwriter 条件格式问题

xlsxwriter 条件格式问题

侃侃尔雅 2021-12-16 15:03:30
我有如下所示的条件格式:worksheet_budget.conditional_format('D2:D100', {'type': 'cell',                                            'criteria': 'between',                                            'minimum': 0,                                            'maximum': 100,                                            'format': caution})worksheet_budget.conditional_format('D2:D100', {'type': 'cell',                                           'criteria': '<',                                           'value': 0,                                           'format': over})它的意图是对于每个小于 0 的值,将格式切换为大于和 0 - 100 之间的格式,以及警告格式。然而,最终发生的是,对于没有值的字段,它会将其视为 0 并使用警告格式。我只希望具有会计编号的字段具有两种格式之一。如果它是空的,它应该没有格式。
查看完整描述

2 回答

?
鸿蒙传说

TA贡献1865条经验 获得超7个赞

正如@martineau 指出的那样,并在文档中突出显示,将'type': 'cell'第二种格式更改为'type': 'blanks'应将over格式应用于所有没有值的单元格。


您还需要删除criteria和value键:


worksheet_budget.conditional_format('D2:D100', {'type': 'blanks',

                                       'format': over})


查看完整回答
反对 回复 2021-12-16
?
慕神8447489

TA贡献1780条经验 获得超1个赞

几乎每次我在 XlsxWriter 中回答有关条件格式的问题时,我都会说同样的话:首先弄清楚如何在 Excel 中进行操作,然后将其应用到 XlsxWriter。


将空白单元格视为零的条件格式问题似乎是 Excel 中的一个已知问题/功能。我遵循了这篇文章中有关该问题的方法之一的建议,并为空白单元格设置了额外的默认格式。我还需要设置stop_if_true属性。这是一个工作示例:


import xlsxwriter


workbook = xlsxwriter.Workbook('conditional_format.xlsx')

worksheet = workbook.add_worksheet()


# Add a format. Light red fill with dark red text.

format1 = workbook.add_format({'bg_color': '#FFC7CE',

                               'font_color': '#9C0006'})


# Add a format. Green fill with dark green text.

format2 = workbook.add_format({'bg_color': '#C6EFCE',

                               'font_color': '#006100'})


# Add a default format.

format3 = workbook.add_format()



# Some sample data to run the conditional formatting against.

data = [

    [34, -75, None, 75, 66, 84, 86],

    [6, 24, 1, 60, 3, 26, 59],

    [None, 79, 97, -13, 22, 5, 14],

    [-27, -71, None, 17, 18, 0, 47],

    [88, 25, -33, 23, 67, "", 36],

    ['', 100, 20, 88, 54, 54, 88],

    [6, 57, '', 28, 10, 41, 48],

    [52, 78, -1, 96, 26, 0, ""],

    [60, -54, 81, None, 81, 90, 55],

    [70, 5, 46, 14, 71, 41, 21],

]



for row, row_data in enumerate(data):

    worksheet.write_row(row + 2, 1, row_data)


worksheet.conditional_format('B3:H12', {'type': 'blanks',

                                        'stop_if_true': True,

                                        'format': format3})


worksheet.conditional_format('B3:H12', {'type': 'cell',

                                        'criteria': 'between',

                                        'minimum': 0,

                                        'maximum': 100,

                                        'format': format1})


worksheet.conditional_format('B3:H12', {'type': 'cell',

                                        'criteria': '<',

                                        'value': 0,

                                        'format': format2})


workbook.close()

输出:

//img1.sycdn.imooc.com//61bae4e40001264f04950367.jpg

查看完整回答
反对 回复 2021-12-16
  • 2 回答
  • 0 关注
  • 335 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号