Python Openpyxl给Excel增加条件规则
使用openpyxl添加条件格式是一个简单而直接的过程。在使用Excel文件时,条件格式对于数据趋势的可视化、突出显示关键数据点以及使数据更有意义和可理解非常有用。在本文中,我们将详细介绍如何使用openpyxl添加条件格式。
OpenPyxl中的条件格式简介
在进入代码实现示例之前,让我们先了解openpyxl中与条件格式相关的一些重要概念。
条件格式规则
Python库openpyxl允许我们定义各种类型的条件格式规则,下面是规则:
- CellIsRule:该规则指示我们必须基于单元格值与特定条件(例如大于、小于和更多)之间的比较来格式化单元格。
- ColorScaleRule:该规则表明我们可以对单元格范围应用颜色比例,其中颜色表示数据的相对值。
- formularrule:该规则涉及基于公式的结果应用格式。
- IconSetRule:该规则涉及根据单元格的值在单元格中显示图标。
数据条形图
数据条形图用于直观地表示带有条形图的特定单元格的值,其中数据条形图的长度对应于该单元格相对于区域中其他单元格的值。
颜色标度
颜色标度允许根据其值对单元格应用不同的颜色。这通常涉及颜色的渐变,其中高值是一种颜色,低值是另一种颜色。
单元格比较
我们已经讨论过CellIsRule,有了这个规则,我们可以设置条件,如等于,大于,小于,或之间,并在满足这些条件时应用格式化。
在Openpyxl中逐步实现条件格式
步骤1 -安装openpyxl:
如果尚未安装openpyxl,请在命令行或终端运行以下命令安装openpyxl, windows使用pip, Mac/Linux使用pip3。
pip/pip3 install openpyxl
步骤2 -创建工作簿
接下来,通过使用workbook()函数创建一个excel工作表,然后使用wb.active()创建一个活动工作表。
from openpyxl import Workbook
# Create a workbook and select the active sheet
wb = Workbook()
ws = wb.active()
步骤3 -添加示例数据:
现在,首先使用函数was .append()将示例数据添加到工作表中,该函数将每一行数据附加到工作表中。
# ...
# Add some sample data
data = [
[10, 20, 30, 40],
[15, 25, 35, 45],
[50, 60, 70, 80],
[5, 10, 15, 20]
]
for row in data:
ws.append(row)
步骤4 -应用条件格式
让我们首先导入必要的类:
# ...
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule, ColorScaleRule, FormulaRule
# ...
例1: CellIsRule用于用红色突出显示大于40的单元格。PatternFill对象定义了填充颜色,该规则应用于A1:D4范围。
# ...
# Example 1: Highlight cells greater than 40 in red
red_fill = PatternFill(start_color="FFEE1111", end_color="FFEE1111", fill_type="solid")
ws.conditional_formatting.add('A1:D4', CellIsRule(operator='greaterThan', formula=['40'], stopIfTrue=True, fill=red_fill))
示例2: ColorScaleRule创建一个颜色梯度,其中最小值(10)与浅黄色相关联,最大值(80)与蓝色相关联。这适用于相同的范围。
# ...
# Example 2: Apply a 2-color scale between 10 and 80
ws.conditional_formatting.add('A1:D4', ColorScaleRule(start_type='num', start_value=10, start_color='FFFFEDA0', end_type='num', end_value=80, end_color='FF00BFFF'))
在 openpyxl 中使用十六进制字符串定义颜色,采用 8位十六进制颜色表示法,常用于定义透明或半透明颜色。6位代码(如 FFFFED
):仅包含 RGB,无透明度。8位代码(如 FFFFEDA0
):包含 Alpha 通道。以下是对其详细解析:
8位十六进制:FF FF ED A0
(实际分组为 FF
FF
ED
A0
)
分解通道:
- Alpha(透明度):
FF
(前两位) → 十进制255
→ 完全不透明。 - 红色:
FF
→ 十进制255
→ 最大红色强度。 - 绿色:
ED
→ 十进制237
→ 较深的绿色。 - 蓝色:
A0
→ 十进制160
→ 中等蓝色强度。
**例3:**公式规则使用蓝色填充突出显示偶数。公式MOD(A1,2)=0检查数字是否为偶数,当公式返回True时应用填充。
# Example 3: Formula-based conditional formatting (highlight even numbers in blue)
blue_fill = PatternFill(start_color="FF0000FF",
end_color="FF0000FF", fill_type="solid")
ws.conditional_formatting.add('A1:D4', FormulaRule(
formula=['MOD(A1,2)=0'], fill=blue_fill))
步骤5 -保存工作簿
最后,使用函数wb.save()保存excel文件,这将根据需要创建一个具有先前应用的条件格式的excel文件。
# Save the workbook
wb.save('conditional_formatting_example.xlsx')
下面是结合上述所有讨论步骤的代码,在应用所需的条件格式后,以下代码的输出将生成一个名为conditional_formatting_example.xlsx的Excel文件:
完整的代码:
# Importing openpyxl library
from openpyxl import Workbook
from openpyxl.styles import PatternFill
from openpyxl.formatting.rule import CellIsRule, ColorScaleRule, FormulaRule
# Create a workbook and select the active sheet
wb = Workbook()
ws = wb.active
# Add some sample data
data = [
[10, 20, 30, 40],
[15, 25, 35, 45],
[50, 60, 70, 80],
[5, 10, 15, 20]
]
for row in data:
ws.append(row)
# Apply conditional formatting based on cell values
# Example 1: Highlight cells greater than 40 in red
red_fill = PatternFill(start_color="FFEE1111", end_color="FFEE1111", fill_type="solid")
ws.conditional_formatting.add('A1:D4', CellIsRule(operator='greaterThan', formula=['40'], stopIfTrue=True, fill=red_fill))
# Example 2: Apply a 2-color scale between 10 and 80
ws.conditional_formatting.add('A1:D4', ColorScaleRule(start_type='num', start_value=10, start_color='FFFFEDA0', end_type='num', end_value=80, end_color='FF00BFFF'))
# Example 3: Formula-based conditional formatting (highlight even numbers in blue)
blue_fill = PatternFill(start_color="FF0000FF", end_color="FF0000FF", fill_type="solid")
ws.conditional_formatting.add('A1:D4', FormulaRule(formula=['MOD(A1,2)=0'], fill=blue_fill))
# Save the workbook
wb.save('conditional_formatting_example.xlsx')
运行结果:
最后总结
使用openpyxl python库添加条件格式是一个非常简单的过程,一点也不令人困惑。在本教程之后,我们将能够在excel文件中执行条件格式。在本文的代码实现示例中,我们讨论了三种主要的条件格式技术,如基于单元格的规则、颜色比例和基于公式的规则。