在文章详解xlsxwriter 操作Excel的常用API-CSDN博客
我们介绍了xlswriter 基础api的使用情况,在实际工作中我们经常会遇到下面的需求,cell满足某某条件时,进行对应的格式化处理。这时候我们可以使用conditional_format的函数,他允许我们根据特定条件将格式应用于单元格或单元格区域。进而避免通过开发人员使用大量的条件语句来实现Excel中的条件过滤功能。
conditional_format函数说明
def conditional_format(self, first_row, first_col, last_row, last_col,
options=None):
"""
Add a conditional format to a worksheet.
Args:
first_row: The first row of the cell range. (zero indexed).
first_col: The first column of the cell range.
last_row: The last row of the cell range. (zero indexed).
last_col: The last column of the cell range.
options: Conditional format options.
Returns:
0: Success.
-1: Row or column is out of worksheet bounds.
-2: Incorrect parameter or option.
其中Args: first_row、 first_col、last_row、last_col不做更多的解释,我们重点需要关注options:
主要参数包括:
type
format
criteria
value
minimum
maximum
其他参数还有
min_type
mid_type
max_type
min_value
mid_value
max_value
min_color
mid_color
max_color
bar_color
bar_only
bar_solid
bar_negative_color
bar_border_color
bar_negative_border_color
bar_negative_color_same
bar_negative_border_color_same
bar_no_border
bar_direction
bar_axis_position
bar_axis_color
data_bar_2010
icon_style
icons
reverse_icons
icons_only
stop_if_true
multi_range
这里我们重点讲解type参数。
Type: cell
即对单元格生效,cell对应的criteria如下:
type: text
用于指定Excel的“特定文本”样式条件格式的匹配:
worksheet.conditional_format('A1:A4', {'type': 'text','criteria': 'containing','value': 'foo','format': format1})
常用的criteria还包括:
'criteria': 'containing',
'criteria': 'not containing',
'criteria': 'begins with',
'criteria': 'ends with',
代码实例
我们通过下面的demo来进行演示
实例 Type: cell
import xlsxwriter
workbook = xlsxwriter.Workbook('test2.xlsx')
worksheet = workbook.add_worksheet()
fill_yellow = workbook.add_format({'bg_color': 'FFAA33'})
fill_red = workbook.add_format({'bg_color': 'FF3333'})
fill_green = workbook.add_format({'bg_color': '00CC66'})
worksheet.conditional_format('A1:C1', {"type": "cell", "criteria": "<", "value": 50, "format": fill_red} )
worksheet.conditional_format('A1:C1', {"type": "cell","criteria": "between","minimum": 50,"maximum": 89, "format": fill_yellow} )
worksheet.conditional_format('A1:C1', {"type": "cell", "criteria": ">=", "value": 90, "format": fill_green})
worksheet.write_row(0,0, [49,60,90])
workbook.close()
输出效果如下:
实例Type: text
在上面代码的基础上增加
worksheet.conditional_format('A2:C2', {'type': 'text',
'criteria': 'containing',
'value': 'kevin',
'format': fill_green})
worksheet.write_row(1,0, ['kevin','mike','tony'])
执行代码后可以看到excel里,kevin背景色为绿色
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!