假设一列有两种颜色:白色和绿色。
任务:使用openpyxl选择绿色单元格。
我已阅读官方文档Working with styles,但未能弄清楚如何操作。
有许多小问题:例如,如何找出当前颜色的代码?
答案 0 :(得分:3)
Bellow是设置单元格的(背景)颜色的一种可能性。
在此示例中,我们使用openpyxl.styles.fills.PatternFill
类。
它使用图案应用均匀填充(这里,它是“实心”图案),
前景色(绿色)和背景色(不可见)
具有实心图案,但可以看到另一个像'gray125'。
您也可以使用openpyxl.styles.fills.GradientFill
课程
产生渐变填充...
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
类的实例。
调用rgb
属性(它是描述符)以将RGB颜色作为字符串。
注意:此值有4个组件:Alpha颜色(透明度)和经典RGB颜色。
color = cell.fill.fgColor
assert isinstance(color, openpyxl.styles.Color)
assert color.rgb == "0000FF00" # Green
但是,这一切都无济于事。因为列的样式也是。
工作表包含column_dimensions
的集合。
每个column_dimensions
包含属性(样式等)
一列或多列(列组的概念)。
min
的{{1}}和max
属性给出了
列索引(组的开始和结束索引,从1开始)。
column_dimensions
与单元格类似,您可以设置列的填充图案:
cd = ws.column_dimensions["A"]
assert cd.min == 1 and cd.max == 1
注意:单元格样式优先于列样式。 换句话说,如果将列样式设置为白色,但将单元格样式设置为绿色, 用户将看到一个绿色单元格。