如何在 openpyxl 中 select 具有特定颜色的单元格?
How to select cell with specific color in openpyxl?
假设一列有两种颜色:白色和绿色。
任务:使用 openpyxl 到 select 绿色单元格。
我已经阅读了官方文档Working with styles,但没有弄清楚如何去做。
还有很多小问题:比如当前颜色的编码怎么算?
Bellow 是设置 cell.
的(背景)颜色的一种可能性
在这个例子中,我们使用openpyxl.styles.fills.PatternFill
class。
它使用模式应用统一填充(这里是 "solid" 模式),
具有前景色(绿色)和背景色(不可见
带有实心图案,但可以看到另一个像 'gray125').
你也可以 openpyxl.styles.fills.GradientFill
class
产生渐变填充…
import openpyxl.styles
wb = load_workbook(xls_path)
ws = wb.active
cell = ws["A1"]
cell.fill = openpyxl.styles.PatternFill('solid', openpyxl.styles.colors.GREEN)
因此,要获得填充图案的颜色,您可以阅读 fill.fgColor
(或背景 fill.bgColor
)属性。
你得到一个 openpyxl.style.Color
class.
的实例
调用 rgb
属性(它是一个描述符)以获取字符串形式的 RGB 颜色。
注意:此值有 4 个分量:Alpha 颜色(透明度)和 classic RGB 颜色。
color = cell.fill.fgColor
assert isinstance(color, openpyxl.styles.Color)
assert color.rgb == "0000FF00" # Green
但是,这些都帮不了你。因为列也有样式。
一个工作表包含 column_dimensions
个集合。
每个 column_dimensions
包含属性(样式等)
对于一个或多个列(列组的概念)。
column_dimensions
的 min
和 max
属性给出
列索引(组的开始和结束索引,从 1 开始)。
cd = ws.column_dimensions["A"]
assert cd.min == 1 and cd.max == 1
像单元格一样,您可以设置列的填充模式:
cd.fill = openpyxl.styles.PatternFill('solid', openpyxl.styles.colors.GREEN)
注意:单元格样式优先于列样式。
换句话说,如果将列样式设置为白色,但将单元格样式设置为绿色,
用户将看到一个绿色单元格。
假设一列有两种颜色:白色和绿色。
任务:使用 openpyxl 到 select 绿色单元格。
我已经阅读了官方文档Working with styles,但没有弄清楚如何去做。
还有很多小问题:比如当前颜色的编码怎么算?
Bellow 是设置 cell.
的(背景)颜色的一种可能性在这个例子中,我们使用openpyxl.styles.fills.PatternFill
class。
它使用模式应用统一填充(这里是 "solid" 模式),
具有前景色(绿色)和背景色(不可见
带有实心图案,但可以看到另一个像 'gray125').
你也可以 openpyxl.styles.fills.GradientFill
class
产生渐变填充…
import openpyxl.styles
wb = load_workbook(xls_path)
ws = wb.active
cell = ws["A1"]
cell.fill = openpyxl.styles.PatternFill('solid', openpyxl.styles.colors.GREEN)
因此,要获得填充图案的颜色,您可以阅读 fill.fgColor
(或背景 fill.bgColor
)属性。
你得到一个 openpyxl.style.Color
class.
调用 rgb
属性(它是一个描述符)以获取字符串形式的 RGB 颜色。
注意:此值有 4 个分量:Alpha 颜色(透明度)和 classic RGB 颜色。
color = cell.fill.fgColor
assert isinstance(color, openpyxl.styles.Color)
assert color.rgb == "0000FF00" # Green
但是,这些都帮不了你。因为列也有样式。
一个工作表包含 column_dimensions
个集合。
每个 column_dimensions
包含属性(样式等)
对于一个或多个列(列组的概念)。
column_dimensions
的 min
和 max
属性给出
列索引(组的开始和结束索引,从 1 开始)。
cd = ws.column_dimensions["A"]
assert cd.min == 1 and cd.max == 1
像单元格一样,您可以设置列的填充模式:
cd.fill = openpyxl.styles.PatternFill('solid', openpyxl.styles.colors.GREEN)
注意:单元格样式优先于列样式。 换句话说,如果将列样式设置为白色,但将单元格样式设置为绿色, 用户将看到一个绿色单元格。