openpyxl 字体条件格式
openpyxl font conditional formatting
我正在使用 pyopenxl 输出一些 excel 电子表格,我遇到了字体条件格式问题。我想用红色突出显示小于 0 的单元格,这就是我所做的:
from pyopenxl import formatting, styles
red_font = styles.Font(size=self.font_size, bold=bold, color=self.red_color_font)
red_fill = styles.PatternFill(start_color=self.red_color, end_color=self.red_color, fill_type='solid')
self.ws.conditional_formatting.add(
cell.coordinate,
formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font)
)
所以我只是为字体和填充创建了样式,并将它们应用到我的单元格中。不好的是它不起作用。一旦我从 CellIsRule()
中删除字体格式,一切都会恢复正常,并且我的单元格会充满红色。但问题是我也需要更改颜色,有人知道我的代码有什么问题吗?或者用 openpyxl?
要突出显示小于零的单元格,在使用 openpyxl
版本 2.5.1
及更高版本时可以使用以下代码:
from openpyxl import formatting, styles, Workbook
wb = Workbook()
ws = wb.active
red_color = 'ffc7ce'
red_color_font = '9c0103'
red_font = styles.Font(size=14, bold=True, color=red_color_font)
red_fill = styles.PatternFill(start_color=red_color, end_color=red_color, fill_type='solid')
for row in range(1,10):
ws.cell(row=row, column=1, value=row-5)
ws.cell(row=row, column=2, value=row-5)
ws.conditional_formatting.add('A1:A10', formatting.rule.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
ws.conditional_formatting.add('B1:B10', formatting.rule.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill))
wb.save("test.xlsx")
对于 openpyxl
版本 2.2.6
您需要使用以下内容:
from openpyxl import formatting, styles
wb = Workbook()
ws = wb.active
red_color = 'ffc7ce'
red_color_font = '9c0103'
red_font = styles.Font(size=14, bold=True, color=red_color_font)
red_fill = styles.PatternFill(start_color=red_color, end_color=red_color, fill_type='solid')
for row in range(1,10):
ws.cell(row=row, column=1, value=row-5)
ws.cell(row=row, column=2, value=row-5)
ws.conditional_formatting.add('A1:A10', formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
ws.conditional_formatting.add('B1:B10', formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill))
wb.save("test.xlsx")
显示如下:
我正在使用 pyopenxl 输出一些 excel 电子表格,我遇到了字体条件格式问题。我想用红色突出显示小于 0 的单元格,这就是我所做的:
from pyopenxl import formatting, styles
red_font = styles.Font(size=self.font_size, bold=bold, color=self.red_color_font)
red_fill = styles.PatternFill(start_color=self.red_color, end_color=self.red_color, fill_type='solid')
self.ws.conditional_formatting.add(
cell.coordinate,
formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font)
)
所以我只是为字体和填充创建了样式,并将它们应用到我的单元格中。不好的是它不起作用。一旦我从 CellIsRule()
中删除字体格式,一切都会恢复正常,并且我的单元格会充满红色。但问题是我也需要更改颜色,有人知道我的代码有什么问题吗?或者用 openpyxl?
要突出显示小于零的单元格,在使用 openpyxl
版本 2.5.1
及更高版本时可以使用以下代码:
from openpyxl import formatting, styles, Workbook
wb = Workbook()
ws = wb.active
red_color = 'ffc7ce'
red_color_font = '9c0103'
red_font = styles.Font(size=14, bold=True, color=red_color_font)
red_fill = styles.PatternFill(start_color=red_color, end_color=red_color, fill_type='solid')
for row in range(1,10):
ws.cell(row=row, column=1, value=row-5)
ws.cell(row=row, column=2, value=row-5)
ws.conditional_formatting.add('A1:A10', formatting.rule.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
ws.conditional_formatting.add('B1:B10', formatting.rule.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill))
wb.save("test.xlsx")
对于 openpyxl
版本 2.2.6
您需要使用以下内容:
from openpyxl import formatting, styles
wb = Workbook()
ws = wb.active
red_color = 'ffc7ce'
red_color_font = '9c0103'
red_font = styles.Font(size=14, bold=True, color=red_color_font)
red_fill = styles.PatternFill(start_color=red_color, end_color=red_color, fill_type='solid')
for row in range(1,10):
ws.cell(row=row, column=1, value=row-5)
ws.cell(row=row, column=2, value=row-5)
ws.conditional_formatting.add('A1:A10', formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill, font=red_font))
ws.conditional_formatting.add('B1:B10', formatting.CellIsRule(operator='lessThan', formula=['0'], fill=red_fill))
wb.save("test.xlsx")
显示如下: